不同型別的顯式等待條件
在顯式等待中,你期望條件發生。例如,你要等到元素可單擊。
以下是一些常見問題的演示。
請注意:在所有這些示例中,你可以使用任何 By
作為定位器,例如 classname
,xpath
,link text
,tag name
或 cssSelector
等到元素可見
例如,如果你的網站需要一些時間來載入,你可以等到頁面完成載入,並且你的元素對 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 作為其輸入引數,則需要傳遞元素定位器。
明智地選擇你想要使用什麼樣的等待條件。