为什么我无法为我的 selenium webdriver (java) 设置系统 属性?
Why aren't I able to set system property for my selenium webdriver (java)?
public class Main {
static Locators Locators = new Locators();
static WebDriver driver = new ChromeDriver();
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\Users\currentuser\chromedriver.exe");
...
}
我收到以下异常:
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. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html
at com.google.common.base.Preconditions.checkState(Preconditions.java:847)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:134)
at org.openqa.selenium.chrome.ChromeDriverService.access[=13=]0(ChromeDriverService.java:35)
at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:159)
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:355)
at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:94)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)
at Main.<clinit>(Main.java:11)
这一行:
static WebDriver driver = new ChromeDriver();
为什么我会想到我已经 sys.setproperty 定义了我如何在我的代码中修复它?
试试下面的代码
public class Main {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\Users\currentuser\chromedriver.exe");
...
// init here
Locators Locators = new Locators();
WebDriver driver = new ChromeDriver();
}
}
在您的代码中,"WebDriver driver = new ChromeDriver();" 在 "System.setProperty...." 之前 执行,这就是您收到此错误的原因。
正如@Xiao Yu 提到的,您试图在系统 属性 中设置路径之前创建 chrome 驱动程序实例。您可以如下所示更新代码
public class Main {
static Locators Locators = new Locators();
static WebDriver driver;
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\Users\currentuser\chromedriver.exe");
driver = new ChromeDriver();
}
public class Main {
static Locators Locators = new Locators();
static WebDriver driver = new ChromeDriver();
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\Users\currentuser\chromedriver.exe");
...
}
我收到以下异常:
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. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html
at com.google.common.base.Preconditions.checkState(Preconditions.java:847)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:134)
at org.openqa.selenium.chrome.ChromeDriverService.access[=13=]0(ChromeDriverService.java:35)
at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:159)
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:355)
at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:94)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)
at Main.<clinit>(Main.java:11)
这一行:
static WebDriver driver = new ChromeDriver();
为什么我会想到我已经 sys.setproperty 定义了我如何在我的代码中修复它?
试试下面的代码
public class Main {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\Users\currentuser\chromedriver.exe");
...
// init here
Locators Locators = new Locators();
WebDriver driver = new ChromeDriver();
}
}
在您的代码中,"WebDriver driver = new ChromeDriver();" 在 "System.setProperty...." 之前 执行,这就是您收到此错误的原因。
正如@Xiao Yu 提到的,您试图在系统 属性 中设置路径之前创建 chrome 驱动程序实例。您可以如下所示更新代码
public class Main {
static Locators Locators = new Locators();
static WebDriver driver;
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\Users\currentuser\chromedriver.exe");
driver = new ChromeDriver();
}