不同型別的顯式等待條件

在顯式等待中,你期望條件發生。例如,你要等到元素可單擊。

以下是一些常見問題的演示。

請注意:在所有這些示例中,你可以使用任何 By 作為定位器,例如 classnamexpathlink texttag namecssSelector

等到元素可見

例如,如果你的網站需要一些時間來載入,你可以等到頁面完成載入,並且你的元素對 WebDriver 可見。

C#

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.ElementIsVisible(By.Id("element-id")));

Java 的

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("element-id")));

等到元素不再可見

和以前一樣,但是相反。

C#

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.InvisibilityOfElementLocated(By.Id("element-id")));

Java 的

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("element-id")));

等到指定元素中出現文字

C#

IWebElement element = driver.FindElement(By.Id("element-id"));

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.TextToBePresentInElement(element, "text"));

Java 的

WebElement element = driver.findElement(By.id("element-id"));

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.textToBePresentInElement(element, "text"));

如果你轉到上面給定的連結,你會看到那裡的所有等待條件。

這些等待條件的使用之間的差異在於它們的輸入引數。

這意味著如果 WebElement 的輸入引數是 WebElement,則需要傳遞 WebElement,如果將 By Locator 作為其輸入引數,則需要傳遞元素定位器。

明智地選擇你想要使用什麼樣的等待條件。