如何在使用 Java 转到 Selenium WebDriver 中的另一个页面之前等待一个页面?

新手上路,请多包涵

我是 Selenium 的新手。我在 Java 中使用 Selenium WebDriver。我正在使用 Eclipse 作为 IDE。我已经为登录页面编写了一些代码并且它运行成功。现在我想在成功登录后转到所需的页面,但我想等待一段时间再转换另一个页面。如何在加载另一个页面之前等待一个页面?

原文由 Nasrin Naher 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 330
2 个回答

据我所知,有3种方式:

  1. 隐式等待:(适用于页面上的所有元素)

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

  1. 显式等待:(适用于特定元素)

WebDriverWait.until(CONDITION_THAT_FINDS_AN_ELEMENT);

更具体的代码如下:

 WebDriverWait wait = new WebDriverWait(driver, 40);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));

  1. 使用线程:

Thread.sleep(NUMBER_OF_MILLIS);

原文由 M. Abbas 发布,翻译遵循 CC BY-SA 3.0 许可协议

我真的会建议不要使用 Thread.sleep(NUMBER_OF_MILLS)。它不会稳定,你会遇到睡眠时间不够长的情况。

如果您只是等待 DOM 加载,那么触发页面加载的 WebDriver 事件将始终等待 DOM 加载,然后再返回控制权。

但是,如果在 DOM 之后使用 AJAX 更改 HTML,那么我建议您使用 WebDriverWait,等待已知事件发生(例如 Object 出现在 html 中,文本更改等)

如果你从这篇文章中拿走了一件事,那么请停止使用 Sleep!

原文由 Robbie Wareham 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题