Example #1
0
        public static void WaitForAndClick(this IWebDriver driver, By selector)
        {
            // Try fast path
            try
            {
                driver.FindElement(selector).Click();
                return;
            }
            catch { }

            // Sometimes, selenium complain, so we enter hack territory
            var wait = new WebDriverWait(driver, SeleniumTester.ImplicitWait);

            wait.UntilJsIsReady();

            int retriesLeft = 4;

retry:
            try
            {
                var el = driver.FindElement(selector);
                wait.Until(d => el.Displayed && el.Enabled);
                driver.ScrollTo(selector);
                driver.FindElement(selector).Click();
            }
            catch (ElementClickInterceptedException) when(retriesLeft > 0)
            {
                retriesLeft--;
                goto retry;
            }
            wait.UntilJsIsReady();
        }
Example #2
0
        public static void WaitForAndClick(this IWebDriver driver, By selector)
        {
            var wait = new WebDriverWait(driver, SeleniumTester.ImplicitWait);

            wait.UntilJsIsReady();

            var el = driver.FindElement(selector);

            wait.Until(d => el.Displayed && el.Enabled);
            el.Click();

            wait.UntilJsIsReady();
        }
Example #3
0
        public static IWebElement WaitForElement(this IWebDriver driver, By selector)
        {
            var wait = new WebDriverWait(driver, SeleniumTester.ImplicitWait);

            wait.UntilJsIsReady();

            var el = driver.FindElement(selector);

            wait.Until(d => el.Displayed);

            return(el);
        }
Example #4
0
        public static void WaitUntilAvailable(this IWebDriver driver, By selector, TimeSpan?waitTime = null)
        {
            // Try fast path
            var wait = new WebDriverWait(driver, SeleniumTester.ImplicitWait);

            try
            {
                var el = driver.FindElement(selector);
                wait.Until(_ => el.Displayed && el.Enabled);
                return;
            }
            catch { }

            // Sometimes, selenium complain, so we enter hack territory
            wait.UntilJsIsReady();

            int retriesLeft = 4;

retry:
            try
            {
                var el = driver.FindElement(selector);
                wait.Until(_ => el.Displayed && el.Enabled);
                driver.ScrollTo(selector);
                driver.FindElement(selector);
            }
            catch (NoSuchElementException) when(retriesLeft > 0)
            {
                retriesLeft--;
                if (waitTime != null)
                {
                    Thread.Sleep(waitTime.Value);
                }
                goto retry;
            }
            wait.UntilJsIsReady();
        }