检查Selenium中是否存在元素

时间:2016-11-23 01:30:05

标签: c# selenium

我想检查Selenium中是否存在元素,如果存在,则将其指定给名称。

现在我有一些看起来像这样的东西:

i

但是,如果不存在值为9的元素,则会返回错误。有没有办法可以检查它是否存在,或者某种东西?

3 个答案:

答案 0 :(得分:11)

有几种选择。我推荐这些。
1。创建方法或Web驱动程序扩展。

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。计算元素,如果有一个或多个元素,则获取它。

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

然后您可以查看if(element != null) { ... }

答案 1 :(得分: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
}

答案 2 :(得分:0)

使用 Dazed's reply,我做了一些修改以传递任何选择器。

//Method :
public bool IfElementExists(By by)
{
     try 
     { 
         Driver.FindElement(by); 
     }
     catch (NoSuchElementException) 
     { 
          return false; 
     }
     catch (StaleElementReferenceException) 
     { 
          return false; 
     }
     return true;
}

//Usage:
if (IfElementExists(By.XPath("...")))
   ...
if (IfElementExists(By.Id("...")))
   ...
if (IfElementExists(By.CssSelector("...")))
   ...