Java selenium错误——DevToolsActivePort file doesn’t exist
1. 问题出现
- 项目:xxxx,抓取热点新闻截图
- 环境:
- linux-centos:7.6
- Google Chrome 109.0.5414.74
- ChromeDriver 109.0.5414.74
- 在Java项目中,使用selenium模拟谷歌浏览器打开系统页面,进行截图,在windows环境下运行都没有问题,可是部署到生成环境后,运行报错。
- 报错信息:
2023-02-08 17:22:05.254 ERROR 38295 --- [io-21233-exec-2] com.cqnews.server.HotMessageServer:截图失败:org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'cqsrd-dsjpthtfw', ip: '172.16.12.9', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-957.el7.x86_64', java.version: '1.8.0_241'
Driver info: driver.version: ChromeDriver
remote stacktrace: #0 0x55745d7d3303 <unknown>
2. 问题原因
使用root安装的chrome,系统使用selenium打开chrome时,需要设置参数,使其在root权限下使用
3. 问题处理
- 设置参数如下:
//设置为 headless 模式 (必须)
chromeOptions.addArguments("--headless");
chromeOptions.addArguments("--disable-gpu");//谷歌文档提到需要加上这个属性来规避bug
chromeOptions.addArguments("--no-sandbox");// “–no - sandbox”参数是让Chrome在root权限下跑
chromeOptions.addArguments("--disable-dev-shm-usage");
chromeOptions.addArguments("lang=zh_CN.UTF-8");
chromeOptions.addArguments("window-size=1920x1080"); //指定浏览器分辨率
4. 附
- google-chrome for centos 历史版本下载
http://orion.lcg.ufrj.br/RPMS/myrpms/google/ - linux一次安装chromedrive记录
https://www.cnblogs.com/zhangxl1016/p/17044331.html