Java 未抛出 Selenium NoSuchElementException
Java Selenium NoSuchElementException not thrown
我对 java 和 selenium 很陌生,有一个关于 NoSuchElementException 的问题:
我得到了以下方法,它应该 return WebElement:
public WebElement getElementByXpath(String xpath, WebDriver driver) {
try {
System.out.println("Test");
return driver.findElement(By.xpath(xpath));
} catch (NoSuchElementException e) {
System.out.println("Element not found");
}
return null;
}
所以我想要的是,如果没有找到元素,那么只会打印“找不到元素”。但我得到的不是这个,而是完整的错误消息,但没有“找不到元素”:
Test
2022-03-07 16:22:33.159 ERROR 1 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//select[@id='sr_creg_country123']/option[contains(text(), 'Deutschland')]"}
(Session info: chrome=98.0.4758.80)
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
.
.
.
据我了解,不会抛出异常,因为从未打印消息“找不到元素”?
但是有人能解释一下为什么以及我必须做什么才能执行 catch 块中的代码吗?
干杯,
迈克尔
Java
有两个NoSuchElementException
例外,一个在java.util
,一个在org.openqa.selenium
。为了捕获 WebDriver
NoSuchElementException
异常,您需要明确定义捕获 catch (org.openqa.selenium.NoSuchElementException e)
如下:
public WebElement getElementByXpath(String xpath, WebDriver driver) {
try {
System.out.println("Test");
return driver.findElement(By.xpath(xpath));
} catch (org.openqa.selenium.NoSuchElementException e) {
System.out.println("Element not found");
}
return null;
}
或者您可以导入要使用的异常
import org.openqa.selenium.NoSuchElementException
这样您的方法代码就可以保持不变:
import org.openqa.selenium.NoSuchElementException
public WebElement getElementByXpath(String xpath, WebDriver driver) {
try {
System.out.println("Test");
return driver.findElement(By.xpath(xpath));
} catch (NoSuchElementException e) {
System.out.println("Element not found");
}
return null;
}
我对 java 和 selenium 很陌生,有一个关于 NoSuchElementException 的问题:
我得到了以下方法,它应该 return WebElement:
public WebElement getElementByXpath(String xpath, WebDriver driver) {
try {
System.out.println("Test");
return driver.findElement(By.xpath(xpath));
} catch (NoSuchElementException e) {
System.out.println("Element not found");
}
return null;
}
所以我想要的是,如果没有找到元素,那么只会打印“找不到元素”。但我得到的不是这个,而是完整的错误消息,但没有“找不到元素”:
Test
2022-03-07 16:22:33.159 ERROR 1 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//select[@id='sr_creg_country123']/option[contains(text(), 'Deutschland')]"}
(Session info: chrome=98.0.4758.80)
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
.
.
.
据我了解,不会抛出异常,因为从未打印消息“找不到元素”? 但是有人能解释一下为什么以及我必须做什么才能执行 catch 块中的代码吗?
干杯, 迈克尔
Java
有两个NoSuchElementException
例外,一个在java.util
,一个在org.openqa.selenium
。为了捕获 WebDriver
NoSuchElementException
异常,您需要明确定义捕获 catch (org.openqa.selenium.NoSuchElementException e)
如下:
public WebElement getElementByXpath(String xpath, WebDriver driver) {
try {
System.out.println("Test");
return driver.findElement(By.xpath(xpath));
} catch (org.openqa.selenium.NoSuchElementException e) {
System.out.println("Element not found");
}
return null;
}
或者您可以导入要使用的异常
import org.openqa.selenium.NoSuchElementException
这样您的方法代码就可以保持不变:
import org.openqa.selenium.NoSuchElementException
public WebElement getElementByXpath(String xpath, WebDriver driver) {
try {
System.out.println("Test");
return driver.findElement(By.xpath(xpath));
} catch (NoSuchElementException e) {
System.out.println("Element not found");
}
return null;
}