有没有办法检查页面上是否存在元素而不使用selenium C#抛出异常。
答案 0 :(得分:8)
您的替代方案可能是使用.FindElements
。如果选择器不匹配任何东西,它将返回一个空列表而不是抛出异常。
var elementExists = driver.FindElements(By.ClassName("something")).Any();
Any
是一个LINQ方法,仅检查列表是否包含某些内容(想想.Count == 0
)。
答案 1 :(得分:1)
我会在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;
}
}
答案 2 :(得分:-1)
http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp
有一种称为显式和隐式等待的东西,请看一下上面的链接。