0

我将 selenium 与 chromedriver 一起使用(通过 maven 中的 webdrivermanager 获得),我通过 ChromeOptions 传递的 cli 参数在 Windows 上不应用。

但是在 MacOS 上它工作正常,在 linux 上它部分工作(因为它加载,但一些调试显示),而在 Windows 上一切都显示。

我试过设置 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)
4

1 回答 1

0

此行不正确,您必须将其从代码中删除:

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

该方法setBinary用于设置浏览器的路径(在您的情况下为 Chrome),而不是驱动程序(在您的情况下为 chromedriver,由 WebDriverManager 自动下载)。

于 2019-03-31T11:11:49.833 回答