如何确保cli参数与Windows上的Web Driver Manager一起使用?

时间:2019-03-30 11:26:30

标签: java selenium selenium-chromedriver webdrivermanager-java

我在chromedriver中使用硒(通过maven中的webdrivermanager获取),我在Windows上未应用通过ChromeOptions传递的cli参数。

但是在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)

1 个答案:

答案 0 :(得分:0)

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

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

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