在webdriver
页面中找不到webElement时,NoSuchElement异常未到来当webelement在页面中可用时,对该webelement执行的所有操作都将起作用,但如果该页面中没有webelement,那么理想情况下,当我们对该webelement执行任何操作时,它应该抛出异常。但对我来说,没有例外,测试也没有响应,即使在调试时它也没有响应。
任何人都可以告诉我你这是在发生吗?
答案 0 :(得分:5)
尝试通过设置隐式超时来查找元素
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
try {
driver.findElement(By.id("element_id"));
System.out.println("Element Found");
} catch (NoSuchElementException e) {
System.out.println("Element Not Found");
}
答案 1 :(得分:1)
我希望您在对 Try / Catch '块中的元素存在进行' 断言 ',然后再对其执行操作。一般实践(我遵循的和我所知道的很多)是断言元素存在,然后对它进行操作(如果是)。
像 -
public boolean isElementPresent(By by) {
try {
driver.findElement(by);
System.out.println("Element Present");
return true;
} catch (NoSuchElementException e) {
System.out.println("Element absent");
return false;
}
}
可能会为您解决问题!
答案 2 :(得分:1)
[FindsBy(How = How.CssSelector, Using = "someCssSelector")]
IWebElement element;
public static bool IsElementPresent(IWebElement element)
{
try
{
return element.Displayed;
}
catch (NoSuchElementException)
{
return false;
}
}
以上代码为我制定了
答案 3 :(得分:1)
确保导入: 导入org.openqa.selenium.NoSuchElementException ;
不导入 java.util