Почему я не могу установить системное свойство для моего селенового веб-драйвера (java)? - PullRequest
0 голосов
/ 19 марта 2020
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$000(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 и как я могу исправить это в своем коде?

Ответы [ 2 ]

0 голосов
/ 19 марта 2020

Как упомянул @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();
    }
0 голосов
/ 19 марта 2020

попробуйте следующий код

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 = new ChromeDriver ();" выполняется за до «System.setProperty ....», и именно поэтому вы получили эту ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...