2016-11-23 439 views
7

我想檢查Selenium中是否存在元素,如果存在,請將其分配給名稱。檢查Selenium中是否存在元素

現在我有一些看起來像這樣:

IWebElement size9 = driver.FindElement(By.CssSelector("a[data-value*='09.0']")); 

然而,當有9值元素不存在,則返回錯誤。有沒有一種方法可以檢查它是否存在,或者類似的東西?

回答

9

有幾種選擇。我推薦這些。
1.創建一個方法或網絡驅動程序擴展。

public static IWebElement FindElementIfExists(this IWebDriver driver, By by) 
{ 
    var elements = driver.FindElements(by); 
    return (elements.Count >=1) ? elements.First() : null; 
} 

// Usage 
var element = driver.FindElementIfExists(By.CssSelector("a[data-value*='09.0']")); 


2.計數的元件,得到它,如果有1個或多個元件。

By by = By.CssSelector("a[data-value*='09.0']"); 
var element = driver.FindElements(by).Count >= 1 ? driver.FindElement(by) : null; 

然後你就可以檢查if(element != null) { ... }

0

你應該能夠做這樣的事情:

public static bool IsElementPresent_byCssSelector(string elementName) 
    { 
     try { Driver.FindElement(By.CssSelector(elementName)); } 
     catch (NoSuchElementException) { return false; } 
     catch (StaleElementReferenceException) { return false; } 
     return true; 
    } 


var test = driver.IsElementPresent_byCssSelector("a[data-value*='09.0']"); 

if(test) 

{ 
//do something 
} 
+0

我不認爲這適用於C#。你可以檢查一下嗎? – Buaban

+0

嗯,該方法沒有得到附加。更新了上述內容。 – Dazed