等效于使用 Java 的 Selenium WebDriver 测试中的 waitForVisible/waitForElementPresent?
·
问题:等效于使用 Java 的 Selenium WebDriver 测试中的 waitForVisible/waitForElementPresent?
使用“HTML”Selenium 测试(使用 Selenium IDE 创建或手动创建),您可以使用一些非常方便的命令,如 WaitForElementPresent 或 WaitForVisible。
<tr>
<td>waitForElementPresent</td>
<td>id=saveButton</td>
<td></td>
</tr>
在 Java 中编写 Selenium 测试时(Webdriver / Selenium RC——我不确定这里的术语),是否有类似的内置功能?
例如,为了检查一个对话框(需要一段时间才能打开)是否可见......
WebElement dialog = driver.findElement(By.id("reportDialog"));
assertTrue(dialog.isDisplayed()); // often fails as it isn't visible *yet*
编写此类检查的最简洁的_robust_方法是什么?
在整个地方添加Thread.sleep()调用将是丑陋和脆弱的,并且滚动你自己的 while 循环似乎也很笨拙......
解答
隐式和显式等待
隐式等待
隐式等待是告诉 WebDriver 在尝试查找一个或多个元素(如果它们不是立即可用的)时轮询 DOM 一段时间。默认设置为 0。一旦设置,就会为 WebDriver 对象实例的生命周期设置隐式等待。
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
显式等待 +预期条件
显式等待是您定义的代码,用于等待特定条件发生,然后再继续执行代码。最坏的情况是 Thread.sleep(),它将条件设置为要等待的确切时间段。提供了一些方便的方法来帮助您编写只等待所需时间的代码。 WebDriverWait 与 ExpectedCondition 结合使用是实现此目的的一种方式。
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(
ExpectedConditions.visibilityOfElementLocated(By.id("someid")));
更多推荐

所有评论(0)