java - java.lang.ExceptionInInitializerError 原因:java.lang.IllegalStateException:驱动程序可执行文件的路径必须使用 Selenium 和 Java 设置
问题描述
public class Login
{
static WebDriver driver = new ChromeDriver();
@SuppressWarnings("resource")
public static void main(String[] args) throws InterruptedException
{
System.setProperty("webdriver.chrome.driver","C:\\Users\\MMFD-3\\MYData\\chromedriver.exe");
String baseUrl = "https://stackoverflow.com/";
driver.get(baseUrl);
}
}
线程“main”中的异常 java.lang.ExceptionInInitializerError 原因:java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置;有关更多信息,请参阅 https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver。最新版本可从 http://chromedriver.storage.googleapis.com/index.html下载 在 com.google.common.base.Preconditions.checkState(Preconditions.java:754) 在 org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:134) 在 org.openqa.selenium.chrome.ChromeDriverService .access$000(ChromeDriverService.java:32) 在 org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:137) 在 org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService. java:355) at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:123) at newpacakge.Login.(Login.java :14)
解决方案
此错误消息...
Exception in thread "main" java.lang.ExceptionInInitializerError Caused by: java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver.
...意味着您的程序无法找到chromedriver可执行文件。
看来你已经很接近了。在类定义中,您可以粗略地声明WebDriver实例,如下所示:
static WebDriver driver;
但是你不能像你一样实例化它:
static WebDriver driver = new ChromeDriver();
除非您特别提到chromedriver可执行文件的绝对路径。
解决方案
您需要将初始化部分与声明分开:
static WebDriver driver;
将 初始化webdriver
为 later 的实例,ChromeDriver()
如下所示:
System.setProperty("webdriver.chrome.driver","C:\\Users\\MMFD-3\\MYData\\chromedriver.exe");
String baseUrl = "https://stackoverflow.com/";
driver = new ChromeDriver();
driver.get(baseUrl);
推荐阅读
- php - 使用 laravel 社交名流验证用户的问题
- azure - 在 Log Analytics 查询中显示图表
- android - 错误:找不到正确的提供者
在此 Wrapper Widget 上方 - python - 怎么了?名称错误
- node.js - Azure AppService Kudu 部署在推送时失败
- html - CSS 样式不适用于 datetime-local 元素
- c++ - 如何在 Matlab MEX 文件中正确包含头 C++ 文件(来自 ALGLIB)
- c# - 在 C# 中使用查找模式
- c# - 如何使用 linq 对联接查询进行分组
- javascript - ReactJS useEffect() 每次页面加载时都会运行