2014-11-16 74 views
3

這個元件可以當必填字段已填寫中找到:Selenium Webdriver C#如何測試一個元素不存在?

IWebElement e1SK = Driver.Instance.FindElement(By.XPath(baseXPathSendKeys + "div[2]/textarea")); 

當所需的字段不填寫,上述元素應該不存在。

測試拋出一個異常:

OpenQA.Selenium.ElementNotVisibleException:元素當前不可見,所以可能不會

進行交互這事我需要爲創建一個方法或者是它甚至比這更簡單?如果你能展示一個例子,這將是有益的,我對C#和Selenium Webdriver還是比較新的。

我讀過,我可能會用戶稱爲findwebelements的東西,然後檢查,以確保結果長度爲零,但我不知道如何實現這一點。

回答

9

這裏有一個簡單的解決問題的方法:

if (Driver.Instance.FindElements(By.XPath(baseXPathSendKeys + "div[2]/textarea")).Count != 0) 
{ 
    // exists 
} 
else 
{ 
    // doesn't exist 
} 

您可以創建一個方法Exists(By)測試元素:

public bool Exists(By by) 
{ 
    if (Driver.Instance.FindElements(by).Count != 0) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

然後調用它,當你想測試的東西:

By by = By.XPath(baseXPathSendKeys + "div[2]/textarea") 
if (Exists(by)) 
{ 
    // success 
} 
+0

是否確定這些代碼塊不會在元素丟失/不可見時引發異常樂。 – Anuragh27crony

+0

@ Anuragh27crony絕對。如果找不到元素,FindElement()將拋出一個異常,但是FindElements()會返回一個長度爲0的ReadOnlyCollection,它將返回一個長度爲0的ReadOnlyCollection。 – Richard

+0

啊!感謝澄清...今天學到了一個好點:) – Anuragh27crony

相關問題