4

有什么方法可以检查页面上是否存在元素而不使用 selenium C# 引发异常。

4

3 回答 3

9

您的替代方法可能是使用.FindElements. 给定一个不匹配任何内容的选择器,它将返回一个空列表,而不是引发异常。

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

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

于 2015-01-21T22:43:21.357 回答
1

我会使用 try catch 块explicit等待

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;
    }
}
于 2015-01-21T20:27:40.367 回答
-1

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

There is something called an explicit and implicit wait take a look at the above link.

于 2015-01-21T20:27:39.043 回答