java - 在 Selenium 中运行无头 Chrome 会引发“未知错误:DevToolsActivePort 文件不存在”
问题描述
当尝试在 Selenium 中运行 Headless Chrome 时,我遵循了这个示例,并编写了以下代码:
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
driver = new ChromeDriver(chromeOptions);
但是在运行代码时出现此错误:
驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置
所以我在代码中添加了这个:
chromeOptions.setBinary(System.getProperty("webdriver.chrome.driver"));
我将参数发送给程序:
webdriver.chrome.driver=C:\\chromedriver_win32\\chromedriver.exe
但后来我得到了这个:
Starting ChromeDriver 2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e) on port 47772
Only local connections are allowed.
Starting ChromeDriver 2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e) on port 9515
Only local connections are allowed.
Invalid --log-level value.
Unable to initialize logging. Exiting...
所以我添加了日志记录设置:
System.setProperty("webdriver.chrome.logfile", "C:\\chromedriver_win32\\chromedriver.log");
System.setProperty("webdriver.chrome.verboseLogging", "true");
chromeOptions.setCapability("--log-level", "WARNING");
但这似乎没有帮助,因为错误是:
Starting ChromeDriver 2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e) on port 43365
Only local connections are allowed.
Starting ChromeDriver 2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e) on port 9515
Only local connections are allowed.
Invalid --log-level value.
Unable to initialize logging. Exiting...
Caused by: org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: was killed
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location C:\\chromedriver_win32\\chromedriver.exe is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
(Driver info: chromedriver=2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e),platform=Windows NT 10.0.16299 x86_64) (WARNING: The server did not provide any stacktrace information)
所以看起来当前的问题是unknown error: DevToolsActivePort file doesn't exist
解决方案
要设置 webdriver 的位置,您可以使用它
System.setProperty("webdriver.chrome.driver","location-driver"); //before 'new ChromeDriver...'
无头运行是您尝试过的
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
driver = new ChromeDriver(chromeOptions);
推荐阅读
- pine-script - 在日图上识别月份名称和 ID 月份的第一个交易日
- r - 我如何在 R 中通过 2 列找到连接值
- python - 使用 quip-api 和 pandas 阅读 Quip 电子表格
- java - 阿卡演员模型。为什么要给自己发消息?
- html - Flex:两个小块和一个大块
- tensorflow - 为什么 tf.keras.optimizers.SGD 没有 global_step
- flutter - Flutter Firebase 远程配置获取 JSON 作为地图
- android - Grpc.Core.RpcException: Status(StatusCode="Unavailable", Detail="Error starting gRPC call. HttpRequestException: Connection timed out SocketEx
- google-sheets - 从 XMLIMPORT 中排除特定类别的表数据
- ansible - 带有 include_variable 的 ansible 循环