java - 如何在服务员的每次迭代中重新加载页面

标签 java selenium async-await webdriver awaitility

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

我的代码:

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

我想在每个 .pollInterval 上每 5 秒重新加载一次页面:

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 秒。

关于java - 如何在服务员的每次迭代中重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61784877/

相关文章:

Java:如何从套接字 readline() 生成事件?

java - 如何使用 Mockito 处理 "any other value"?

java - 使用 flash 播放器加载图形时如何使用 selenium webdriver 处理图形并读取图形数据

ruby-on-rails - Selenium RC : Run tests in multiple browsers automatically

ruby-on-rails - Nightwatch 可以用来测试 Rails 吗?

java - 简单游戏的面向对象方法

java - 如何在 Struts 迭代器中访问 ValueStack 对象?

javascript - Sequelize 中的异步 getter/setter 作为属性的一部分

c# - async void 方法是否在每次调用时都创建一个新线程?

c# - 最佳实践 - 警告 : method lacks 'await' operator warning