首页 >Java >java教程 >单击之前如何可靠地等待 WebDriver 中的元素可见性?

单击之前如何可靠地等待 WebDriver 中的元素可见性?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-27 05:58:10294浏览

How to Reliably Wait for Element Visibility in WebDriver Before Clicking?

WebDriver:等待元素存在

问题:如何可靠地等待元素变得可见单击它?单独的隐式等待看起来不一致。

为了解决这个问题,可以使用隐式等待。然而,更可靠的解决方案是:

for (int second = 0;; second++) {
    Thread.sleep(sleepTime);
    if (second >= 10)
        fail("timeout : " + vName);
    try {
        if (driver.findElement(By.id(prop.getProperty(vName))).isDisplayed())
            break;
    } catch (Exception e) {
        writeToExcel("data.xls", e.toString(), parameters.currentTestRow, 46);
    }
}
driver.findElement(By.id(prop.getProperty(vName))).click();

此代码会等待,直到元素可见或达到超时值。但是,它需要用户定义等待时间,这可能很不方便。

答案:利用 WebDriver 的显式等待功能来确保可靠地等待元素存在。

以下代码演示了推荐的方法:

WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id<locator>));

或者,您可以使用:

wait.until(ExpectedConditions.elementToBeClickable(By.id<locator>));

这些方法提供对等待条件的细粒度控制,消除了对自定义睡眠逻辑的需要。

其他资源:

  • [预期条件](https://seleniumhq.github.io/selenium/javadoc/3.141.59/org/openqa/selenium/support/ui/ExpectedCondit ions.html)
  • [WebDriverWait](https://seleniumhq.github.io/selenium/javadoc/3.141.59/org/openqa/selenium/support/ui/WebDriverWait.html)

以上是单击之前如何可靠地等待 WebDriver 中的元素可见性?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn