我在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)
答案 0 :(得分:0)
此行不正确,您必须将其从代码中删除:
options.setBinary(WebDriverManager.chromedriver().getBinaryPath());
方法setBinary
用于设置浏览器(在您的情况下为Chrome)而不是驱动程序(在您的情况下为chromedriver,由WebDriverManager自动下载)的路径。