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