Как обеспечить работу аргументов cli с помощью Web Driver Manager в Windows? - PullRequest
0 голосов
/ 30 марта 2019

Я использую селен с chromedriver (полученный через webdrivermanager в maven), аргументы cli, которые я передаю через ChromeOptions, не применяются в Windows.

Однако в MacOS он работает нормально, а в linuxон частично работает (как он загружается, но некоторые отладки показывают), в то время как на окнах все показывает.

Я попытался установить аргументы chrome, однако, похоже, он мало что делает.

        Logger.getLogger("org.openqa.selenium.remote").setLevel(Level.OFF);
        System.setProperty("webdriver.chrome.silentLogging", "true");
        System.setProperty("webdriver.chrome.verboseLogging", "false");
        System.setProperty("webdriver.chrome.silentOutput", "true");
        LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");

        WebDriverManager.chromedriver().setup();

        ChromeOptions options = new ChromeOptions();
        options.addArguments("start-maximized"); // open Browser in maximized mode
        options.addArguments("disable-infobars"); // disabling infobars
        options.addArguments("--disable-extensions"); // disabling extensions
        options.addArguments("--disable-gpu"); // applicable to windows os only
        options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
        options.addArguments("--disable-logging"); // overcome limited resource problems
        options.addArguments("--no-sandbox"); // Bypass OS security model
        options.addArguments("--silent");
        options.addArguments("--headless");
        options.addArguments("--user-agent =\"" + configManager.getJsonReader().get("user-agent") + "\"");

        options.setBinary(WebDriverManager.chromedriver().getBinaryPath());

        browser = new ChromeDriver(options);
        ((ChromeDriver) browser).setLogLevel(Level.OFF);

Я ожидаю получить вывод без вывода сообщений, но вместо этого я получаю тонны журналов, от уровней журналов до разрешенных соединений с локальным портом и всего остального.

После этого я получаю ошибку в моемконсоль:

Mar 30, 2019 11:31:17 AM java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
Invalid --log-level value.
Unable to initialize logging. Exiting...
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: was killed
  (unknown error: DevToolsActivePort file doesn't exist)

1 Ответ

0 голосов
/ 31 марта 2019

Эта строка неверна, вы должны удалить ее из кода:

options.setBinary(WebDriverManager.chromedriver().getBinaryPath());

Метод setBinary предназначен для установки пути браузера (Chrome в вашем случае), а не драйвера (chromedriver в вашем случае, автоматически загружается WebDriverManager).

...