示例#1
0
 private OpenQA.Selenium.Support.UI.DefaultWait <IWebDriver> checkUntil(int wait)
 {
     OpenQA.Selenium.Support.UI.DefaultWait <IWebDriver> fluentWait = new OpenQA.Selenium.Support.UI.DefaultWait <IWebDriver>(WebDriver);
     fluentWait.Timeout         = TimeSpan.FromSeconds(wait);
     fluentWait.PollingInterval = TimeSpan.FromMilliseconds(250);
     return(fluentWait);
 }
        /// <summary>
        /// Find an element, waiting until a timeout is reached if necessary.
        /// </summary>
        /// <param name="context">The search context.</param>
        /// <param name="by">Method to find elements.</param>
        /// <param name="timeout">How many seconds to wait.</param>
        /// <param name="polling">How many seconds to research.</param>
        /// <param name="displayed">Require the element to be displayed?</param>
        /// <returns>The found element.</returns>
        public static ReadOnlyCollection <IWebElement> FindElements(this ISearchContext context, By by, uint timeout = 60, uint polling = 250)
        {
            var wait = new OpenQA.Selenium.Support.UI.DefaultWait <ISearchContext>(context);

            wait.Timeout         = TimeSpan.FromSeconds(timeout);
            wait.PollingInterval = TimeSpan.FromMilliseconds(polling);
            wait.IgnoreExceptionTypes(typeof(NoSuchElementException), typeof(WebDriverException), typeof(StaleElementReferenceException));
            return(wait.Until(ctx => {
                var elem = ctx.FindElements(by);
                if (elem.Count == 0)
                {
                    return null;
                }
                return elem;
            }));
        }
示例#3
0
        /// <summary>
        /// Find an element, waiting until a timeout is reached if necessary.
        /// </summary>
        /// <param name="context">The search context.</param>
        /// <param name="by">Method to find elements.</param>
        /// <param name="timeout">How many seconds to wait.</param>
        /// <param name="polling">How many seconds to research.</param>
        /// <param name="displayed">Require the element to be displayed?</param>
        /// <returns>The found element.</returns>
        public static IWebElement FindElement(this ISearchContext context, By by, uint timeout = 60, uint polling = 250, bool displayed = false, bool enabled = false)
        {
            var wait = new OpenQA.Selenium.Support.UI.DefaultWait <ISearchContext>(context);

            wait.Timeout         = TimeSpan.FromSeconds(timeout);
            wait.PollingInterval = TimeSpan.FromMilliseconds(polling);
            wait.IgnoreExceptionTypes(typeof(NoSuchElementException));
            return(wait.Until(ctx => {
                var elem = ctx.FindElement(by);
                if (displayed && !elem.Displayed && !elem.Enabled)
                {
                    return null;
                }
                return elem;
            }));
        }
        /// <summary>
        /// Find an element, waiting until a timeout is reached if necessary.
        /// </summary>
        /// <param name="context">The search context.</param>
        /// <param name="by">Method to find elements.</param>
        /// <param name="timeout">How many seconds to wait.</param>
        /// <param name="polling">How many seconds to research.</param>
        /// <param name="displayed">Require the element to be displayed?</param>
        /// <returns>The found element.</returns>
        public static IWebElement FindElement(this ISearchContext context, By by, uint timeout = 60, uint polling = 250, bool displayed = true)
        {
            try
            {
                var wait = new OpenQA.Selenium.Support.UI.DefaultWait <ISearchContext>(context)
                {
                    Timeout         = TimeSpan.FromSeconds(timeout),
                    PollingInterval = TimeSpan.FromMilliseconds(polling)
                };

                wait.IgnoreExceptionTypes(typeof(NoSuchElementException), typeof(WebDriverException), typeof(StaleElementReferenceException));

                return(wait.Until(ctx =>
                {
                    var elem = ctx.FindElement(by);

                    if (elem == null)
                    {
                        return null;
                    }

                    if (displayed)
                    {
                        if (elem.Displayed && elem.Enabled)
                        {
                            return elem;
                        }
                    }
                    else
                    {
                        if (!elem.Displayed || !elem.Enabled)
                        {
                            return elem;
                        }

                        return elem;
                    }

                    return null;
                }));
            }
            catch
            {
                return(null);
            }
        }