Selenium webdriver - 使用 chrome 驱动程序隐式等待

我想在我的代码中使用隐式或显式等待。但它不适用于 chrome 驱动程序。有什么特别的补丁可以工作吗?但同样适用于 firefoxdriver。

我的应用程序仅支持 chrome,因此我无法选择使用其他浏览器。请帮助我如何使用 - 等待 - 加载元素或任何其他解决方案可用?

stack overflow Selenium webdriver - implicit wait with chrome driver
原文答案

答案:

作者头像

显式等待

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 

IWebElement myDynamicElement = wait.Until<IWebElement>((d) => { return d.FindElement(By.Id("someDynamicElement")); });

隐式等待

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));

另外,尝试下载最新版本的 ChromeDriver- https://code.google.com/p/selenium/wiki/ChromeDriver

并将 WebDriver NuGet 更新到最新的可用版本——我认为是 2.45。

按照这些步骤,我在 Chrome 上的所有测试都运行良好。

作者头像

按照以下方式使用显式等待:

 WebElement Element = (new WebDriverWait(driver, 30))
              .until(ExpectedConditions.elementToBeClickable(By.className("progress_bg")));

Element.click();

您可以使用 Id 、 Xpath 或任何其他定位器作为元素。根据您的评论,我在上面使用了类。