在swicthing到Java 8之后,Webdriver断言失败了

时间:2015-10-01 14:51:17

标签: java selenium

切换到Java 8后,许多webdriver断言在尝试在呈现元素之前断言某些内容时失败。看起来渲染的速度和Java测试并不是同步的。项目中使用的Webdriver是Selenium-chrome-driver-2.43.1。我没有尝试过其他浏览器。无论如何我可以在没有太多“等待元素”的情况下完成这项工作吗?

1 个答案:

答案 0 :(得分:1)

您可以使用隐式或显式等待。

如果应用程序通常很慢​​,则隐式影响所有请求,因此您希望提高所有请求的等待时间。但设置得太高可能导致测试在您不想要的情况下等待很长时间:

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

显式等待为您提供更多灵活性,但需要更多工作。例如,假设您希望大部分操作在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"));
        }
    });