public void Intercept(IInvocation invocation) { var attribute = invocation.GetAttribute <Measure>(); if (attribute == null) { return; } var metricName = attribute.GetValue(nameof(Measure.MetricName)); var stopwatch = new Stopwatch(); stopwatch.Start(); invocation.Proceed(); stopwatch.Stop(); Console.WriteLine($"{metricName}: {stopwatch.ElapsedMilliseconds}"); }
private async Task InterceptAsync(IInvocation invocation) { if (invocation.IsGetterPropertyWithAttribute <SelectorAttribute>()) { var attribute = invocation.GetAttribute <SelectorAttribute>(); if (invocation.InvocationTarget is PageObject pageObject) { var result = await invocation.GetReturnValue(pageObject, attribute).ConfigureAwait(false); invocation.ReturnValue = result; return; } if (invocation.InvocationTarget is ElementObject elementObject) { var result = await invocation.GetReturnValue(elementObject, attribute).ConfigureAwait(false); invocation.ReturnValue = result; return; } } invocation.ReturnValue = null; }