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中文網其他相關文章!