使用c#和selenium webdriver,我能够通过使用以下代码来处理元素是否存在:
new WebDriverWait(driver, TimeSpan.FromSeconds(timeOut)).Until(ExpectedConditions.ElementExists((By.Id(login))));
但我如何检查相反的情况呢?即一个元素不存在?
答案 0 :(得分:2)
据我所知,Selenium没有Exists
属性,这将非常有用。相反,如果某个元素不存在,Selenium会抛出异常。这已经进行了测试,以确保网页上不存在有趣处理的元素。
我采用的方法是查看元素是否为Displayed
,并将其包装在try-catch中:
bool displayed = false;
try
{
wait = new WebDriverWait(driver, TimeSpan.FromSeconds(2));
wait.Until(driver => driver.FindElement(ByLocator));
displayed = driver.FindElement(ByLocator).Displayed;
}
catch
{
}
答案 1 :(得分:0)
使用"显示"是一个坏主意,因为"显示"意味着"可见"。如果元素将具有" display:none;" css样式,它将被标记为不存在。 但是这个元素仍然存在!只是不可见!
最好使用这样的功能:
public bool IsExist()
{
if (element == null || element.Size.Width < 1)
{
return false;
}
return true;
}
当你看到它检查null对象和元素宽度时。 我相信更多可能的元素不会显示(不可见),而是宽度<1 =)