在 webdriver 的页面中找不到 webElement 时不会出现 NoSuchElement 异常
当 webelement 在页面中可用时,对该 webelement 所做的所有操作都将起作用,但如果该 webelement 在该页面中不可用,那么理想情况下,当我们对该 webelement 执行任何操作时,它应该抛出异常。但对我来说,没有例外,测试没有响应,即使在调试时它也没有在那个地方响应。
谁能告诉我这正在发生吗?
在 webdriver 的页面中找不到 webElement 时不会出现 NoSuchElement 异常
当 webelement 在页面中可用时,对该 webelement 所做的所有操作都将起作用,但如果该 webelement 在该页面中不可用,那么理想情况下,当我们对该 webelement 执行任何操作时,它应该抛出异常。但对我来说,没有例外,测试没有响应,即使在调试时它也没有在那个地方响应。
谁能告诉我这正在发生吗?
尝试通过设置隐式超时来查找元素
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");
}
我希望你在对它采取行动之前在' 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;
}
}
可能会为您解决问题!
[FindsBy(How = How.CssSelector, Using = "someCssSelector")]
IWebElement element;
public static bool IsElementPresent(IWebElement element)
{
try
{
return element.Displayed;
}
catch (NoSuchElementException)
{
return false;
}
}
上面的代码为我解决了
确保导入: import org.openqa.selenium.NoSuchElementException;
不要导入java.util