使用 Selenium Webdriver 檢查元素是否存在
1. 概述
在本教程中,我們將學習如何使用 Selenium WebDriver 檢查元素是否存在。
對於大多數檢查,最好使用明確等待來確保元素在與元素互動之前存在**或可見**。然而,有時我們需要簡單地知道某個元素是否存在而不進行斷言,這使我們能夠根據元素的存在或不存在來實現特殊的附加邏輯。
在本教程結束時,我們將知道如何檢查元素是否存在。
2.使用findElements()
方法
findElements()
方法傳回與By
條件相符的Web 元素清單。如果沒有找到符合的元素,則傳回空列表。透過檢查清單是否為空,我們可以確定所需的元素是否存在:
boolean isElementPresentCheckByList(By by) {
List<WebElement> elements = driver.findElements(by);
return !elements.isEmpty();
}
對於許多場景來說,這是一個乾淨有效的解決方案。
3. 使用findElement()
方法
findElement()
方法是另一種在網頁上定位元素的常用方法。如果存在,它會傳回單一 Web 元素。如果該元素不存在,則拋出NoSuchElementException
。
為了處理元素可能不存在的情況,我們應該使用try-catch
區塊來捕獲異常。如果拋出異常,則表示該元素不存在,因此我們捕獲它並傳回false
。當我們確定單個元素的存在對於測試的後續步驟至關重要並且我們希望明確處理它的缺失時,此方法非常有用。
透過捕獲NoSuchElementException
,我們可以記錄適當的訊息、採取糾正措施或正常退出測試而不會導致腳本崩潰:
boolean isElementPresentCheckByHandleException(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
4. 結論
在本文中,我們探討了使用 Selenium WebDriver 檢查元素是否存在的兩種基本方法: findElements()
和具有異常處理的findElement()
。這些方法可以幫助我們知道某個元素是否存在而不會導致測試失敗。
但是,如果我們需要斷言某個元素是否存在,則應該使用ExpectedConditions
明確等待。透過探索和理解這些不同的方法,我們可以自信地選擇最合適的方法。
與往常一樣,範例的原始程式碼可在 GitHub 上取得。