2016-12-13 105 views
2

我知道我可以使用(driver.findElements(By.xpath("Xpath Value")).size() != 0);如何確定Selenium是否存在WebElement?

不過,我使用的是頁面對象模型,誰的整個目的是預先定義WebElements在一個單獨的類,所以我沒有在我的測試類「FindElements通過」 。

這裏是我目前有

if (objPage.webElement.isEnabled()){ 
    System.out.println("found element"); 
}else{ 
    System.out.println("element not found"); 
} 

然而,這種嘗試識別其可能不存在WebElement。當它不存在,我得到:

沒有這樣的元素」異常

+2

當您對可能不存在的元素使用FindBy批註時,請嘗試使用列表?如果不是大小將爲零。 – Grasshopper

+0

@Grasshopper這是一個很好的答案!你爲什麼不把它做成完整的而不是簡單的評論? – Cryptor

+0

@Cryptor JeffC的答案具有相同的邏輯,我認爲這是處理這些案例的正確方法。 – Grasshopper

回答

-2

您可以使用isDisplayed()來檢查元素是否可見它夠瑣碎寫一個方法。這將做你想做的事情是:

public boolean isElementDisplayed(WebElement element) { 
    try { 
     return element.isDisplayed(); 
     } catch(NoSuchElementException e) { 
     return false; 
    } 
} 
+0

抓住這個異常很好,謝謝。 – dsidler

+2

一個警告的話......這個答案有一個隱藏的陷阱。如果你想確認一個元素不被顯示,但該元素不存在,該怎麼辦?這個函數會返回false,並且測試會通過,但是元素甚至不在頁面上......誤報。測試存在的元素...然後測試它是否被啓用。 – JeffC

+0

在檢查任何條件之前,我們需要檢查元素的存在。 – Akarsh

2

最佳做法是做什麼您最初的建議,使用.findElements()和檢查.size != 0,或者您也可以使用我的偏好,.isEmpty()您可以創建一個尿路感染。 l像下面的函數一樣測試一個元素是否存在。

public boolean elementExists(By locator) 
{ 
    return !driver.findElements(locator).isEmpty(); 
} 

你也可以在你的頁面對象中建立一個函數。

相關問題