断言元素不再存在

时间:2012-01-13 14:07:10

标签: webdriver

使用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毫秒轮询一次但是一旦条件成立,我实际上等了整整一分钟才进入下一步。这似乎是不正确的行为,我错过了什么?有什么建议吗?

3 个答案:

答案 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 ));