【问题标题】:java.lang.ExceptionInInitializerError Caused by: java.lang.IllegalStateException: The path to the driver executable must be set with Selenium and Javajava.lang.ExceptionInInitializerError 原因:java.lang.IllegalStateException:驱动程序可执行文件的路径必须使用 Selenium 和 Java 设置
【发布时间】:2020-03-13 12:55:02
【问题描述】:
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) 在 org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88) 在 org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:123) 在 newpacakge.Login.(Login.java:14)

【问题讨论】:

标签: java selenium google-chrome webdriver selenium-chromedriver


【解决方案1】:

在设置属性之前,您正在创建 ChromeDriver 的实例。您可以在进行以下更改后尝试吗:

public class Login 
{
    static WebDriver driver;   
    @SuppressWarnings("resource")
    public static void main(String[] args) throws InterruptedException 
    {

        System.setProperty("webdriver.chrome.driver","C:\\Users\\MMFD-3\\MYData\\chromedriver.exe");
        driver = new ChromeDriver();    
        String baseUrl = "https://stackoverflow.com/";                  
        driver.get(baseUrl);
    }
}

并确保 chrome 驱动程序版本与您的 chrome 版本匹配

【讨论】:

  • 我的 Chrome 版本是 78.0,我的 chrome 驱动程序版本是 78.0
  • 根据您的代码进行更改后,我在线程“main”java.lang.NoClassDefFoundError: okhttp3/ConnectionPool 中遇到异常
  • 如何添加 Selenium?您应该在项目中添加了 selenium-standalone-server jar。
【解决方案2】:

此错误消息...

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初始化为ChromeDriver()的实例,如下所示:

System.setProperty("webdriver.chrome.driver","C:\\Users\\MMFD-3\\MYData\\chromedriver.exe");  
String baseUrl = "https://stackoverflow.com/";
driver = new ChromeDriver();
driver.get(baseUrl);

【讨论】:

    猜你喜欢
    • 2017-02-04
    • 1970-01-01
    • 2018-03-17
    • 2017-12-21
    • 2016-11-04
    • 2020-11-27
    • 2016-12-05
    • 2017-09-07
    • 1970-01-01
    相关资源
    最近更新 更多