如何在每次服务员迭代时重新加载页面

2019年1月26日 25点热度 0条评论

我想在Awaitility.await()的每次迭代中重新加载页面,以检查元素的文本是否已更改。

我的代码:

Awaitility.await()
        .pollInterval(5000, TimeUnit.MILLISECONDS)
        .atMost(30, SECONDS)
        .until(() -> driver.findElement(By.id("id")).getText(), equalTo(EXPECTED_TEXT));
}

我想每5秒在每个
.pollInterval上重新加载页面,方法是:

driver.navigate().refresh()

我该如何实现?

或建议使用Java更好的解决方案。

谢谢!

解决方案如下:

使用循环和Thread.sleep(...)是最简单的方法:

String xpath = "//*[contains(., '" + EXPECTED_TEXT +"')]";
WebElement element = null;

for (int i = 0; i < 6; i++) {
    try {
        element = driver.findElement(By.xpath(xpath));
        break;
    } catch (NoSuchElementException ex) {
        driver.navigate().refresh();
        Thread.sleep(5000);
    }
}

if (element != null) {
    // Found it!
}

六次尝试乘以5秒将为您提供大约30秒的最大值。