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>));
这些方法提供对等待条件的细粒度控制,消除了对自定义睡眠逻辑的需要。
其他资源:
以上是单击之前如何可靠地等待 WebDriver 中的元素可见性?的详细内容。更多信息请关注PHP中文网其他相关文章!