使用webdriver并测试使用gwt构建的应用程序。我想首先声明一个元素存在。这个元素是动态加载的,测试起来并不容易。但是我需要断言元素不再存在。因为它不再出现在dom中。我最初的方法是建立一个预期的条件,然后等待条件,即
ExpectedCondition<Boolean> e = new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.findElements(By.cssSelector(someCSSpath)).size() == 0;
}};
WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(e);
我原本预计会等待15秒才能使该元素从dom中消失,我希望它会每500个milis轮询一次。我希望在每次民意调查中,布尔都是假的,因为元素会被发现,直到它消失为止,此时条件变为真。我在输出中发现的确是它每500毫秒轮询一次但是一旦条件成立,我实际上等了整整一分钟才进入下一步。这似乎是不正确的行为,我错过了什么?有什么建议吗?
答案 0 :(得分:0)
尝试使用:ExpectedConditions.stalenessOf(..)
来检查元素是否已成功从DOM中删除。适合我。
答案 1 :(得分:0)
您是否将“implicitlyWait”设置为60秒?
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
当对象消失时,它会在返回前60秒等待“findElements”方法。
我建议在运行“wait.until(e);”之前将“implicitlyWait”设置为0方法,然后将其设置回60秒。
答案 2 :(得分:0)
如果你有WebElement的句柄,你可以使用它。
new WebDriverWait(driver, 2).until(ExpectedConditions.stalenessOf( webElement ));