切换到 Java 8 后,许多 Webdriver 断言在尝试在渲染元素之前断言某些内容时会失败。看起来渲染速度和 Java 测试不同步。项目中使用的Webdriver是Selenium-chrome-driver-2.43.1。我还没有在其他浏览器上尝试过这个。无论如何,我可以在不放置太多“等待元素”的情况下完成这项工作吗?
最佳答案
您可以使用隐式或显式等待。
隐式影响所有请求,如果应用程序通常很慢,则更容易,因此您希望增加所有请求的等待时间。但设置得太高可能会导致测试等待很长时间,如果您不想这样做:
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
显式等待为您提供了更大的灵 active ,但需要更多的工作。例如,假设您希望大部分操作在 10 秒内完成,因此您将上面的隐式等待设置为 10 秒。但是假设您知道以下操作可能会因隐式等待而失败,因为该特定元素平均需要 15 秒才能显示:
WebElement element = driver.findElement(By.name("q"));
所以你可以将其更改为:
WebElement element = (new WebDriverWait(driver, 20))
.until(newExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return driver.findElement(By.name("q"));
}
});
关于java - 切换到 Java 8 后 Webdriver 断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32890596/