java - WebDriver - 使用 Java 等待元素

标签 java webdriver selenium-webdriver

我正在寻找类似于 waitForElementPresent 的东西来检查元素是否在我单击之前显示。我认为这可以通过 implicitWait 来完成,所以我使用了以下内容:

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

然后点击

driver.findElement(By.id(prop.getProperty(vName))).click();

不幸的是,有时它会等待元素,有时则不会。我找了一会儿,找到了这个解决方案:

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();

它一直在等待,但在超时之前它必须等待 10 次 5、50 秒。有点多。所以我将隐式等待设置为 1 秒,直到现在一切都很好。因为现在有些事情会在超时前等待 10 秒,而有些事情会在 1 秒后超时。

您如何处理代码中存在/可见的等待元素?任何提示都是显而易见的。

最佳答案

这就是我在代码中的做法。

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

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

准确地说。

另见:

关于java - WebDriver - 使用 Java 等待元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11736027/

相关文章:

javascript - 使用 Watir Webdriver 在 Firefox 中打开新选项卡

java - Android Studio : Gradle project sync failed with Java "non-zero exit value 2"

javascript - 如何在 Angularjs Protractor 中使用命令行参数?

java - 使用 Java 套接字和 DataStreams 进行文件传输的问题

javascript - Webdriver:Google 快讯选项的自动化

Python - 无法使用 selenium chromewebdriver 下载文件 - 'Failed - Download error'

selenium - HtmlUnit驱动程序不执行JavaScript

javascript - 如何使用 selenium webdriver 处理 onblur 事件

java - 使 thread.sleep() 停止前面的代码

java TwitterAuthClient onActivityResult