C#Selenium - 有没有办法检查元素是否存在而不抛出NoSuchElementException

时间:2015-01-21 20:24:10

标签: c# selenium nosuchelementexception

有没有办法检查页面上是否存在元素而不使用selenium C#抛出异常。

3 个答案:

答案 0 :(得分:8)

您的替代方案可能是使用.FindElements。如果选择器不匹配任何东西,它将返回一个空列表而不是抛出异常。

var elementExists = driver.FindElements(By.ClassName("something")).Any();

Any是一个LINQ方法,仅检查列表是否包含某些内容(想想.Count == 0)。

答案 1 :(得分:1)

我会在explicit等待

时使用try catch block
public bool CheckElementExist(string state)
{
    //Write the selector carefully.
    By byCss = By.CssSelector("#view-" + state + "");
    try
    {
     //Explicit wait to check if element exist for 10s   
     new WebDriverWait(Driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementExists(byCss));
        return true;
    }
    catch (NoSuchElementException)
    {
        return false;
    }
}

答案 2 :(得分:-1)

http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp

有一种称为显式和隐式等待的东西,请看一下上面的链接。