Example #1
0
        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;
        }