2016-11-23 440 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