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; }