RSelenium无法启动Chrome会话 驱动服务启动超时问题咨询
RSelenium启动Chrome会话超时问题排查方案
问题复现
测试使用的R代码如下:
library(dplyr) library(RSelenium) library(netstat) # Start the server rs_driver_object <- rsDriver(browser = 'chrome', chromever = '103.0.5060.53', port = free_port())
运行后控制台返回核心报错:
Selenium message:Timed out waiting for driver server to start. Build info: version: '4.0.0-alpha-2', revision: 'f148142cf8', time: '2019-07-01T21:30:10' System info: host: 'LEAVING OUT HOST FOR SECURITY', ip: 'LEAVING OUT IP FOR SECURITY', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.6', java.version: '18.0.1.1' Driver info: driver.version: unknown Could not open chrome browser.
核心报错特征:返回Driver info: driver.version: unknown时,90%以上的诱因都是版本不匹配或驱动权限异常
排查解决步骤
按优先级从高到低依次排查:
- 优先核对Chrome与chromedriver版本匹配关系。代码中硬编码了
chromever = '103.0.5060.53',如果本地安装的Chrome浏览器实际版本不是103,会直接触发驱动启动失败、版本识别为unknown的报错。可以打开Chrome访问chrome://settings/help查看当前浏览器真实版本,要么将chromever参数修改为和浏览器完全对应的版本号,要么直接删除chromever参数,让RSelenium自动匹配下载对应版本的驱动。 - 修复Java版本兼容性问题。当前运行的Selenium Server是2019年的4.0.0-alpha-2预览版,对Java 18的兼容性极差,高版本Java会直接导致驱动进程初始化卡死。可以将本地Java环境替换为Java 8或Java 11这类长期支持版本,再重新运行代码。
- 清理残留Selenium进程避免冲突。之前运行失败残留的Selenium、chromedriver僵尸进程会占用端口、锁死驱动文件,导致新会话启动超时。Mac系统下可以打开终端执行
ps aux | grep -E 'selenium|chromedriver'查找相关残留进程,拿到进程ID后执行kill -9 进程ID清理后再重试。 - 修复驱动文件权限问题。RSelenium自动下载的chromedriver有时会丢失可执行权限,导致Selenium无法拉起驱动进程。可以找到RSelenium缓存的chromedriver文件(默认存放在用户目录下的
~/Library/Application Support/RSelenium/bin路径),在终端执行chmod +x 对应chromedriver文件的完整路径添加执行权限。如果自动下载的文件损坏,可以手动下载对应版本的chromedriver放到该路径下再重试。 - 延长启动超时阈值。如果本地网络环境较差,驱动、Selenium Server下载速度慢,默认的20秒超时时间不足以完成初始化,可以在
rsDriver调用时添加timeout = 60参数,将超时时间调整到60秒以上,同时加上verbose = TRUE参数输出完整初始化日志,方便定位具体卡点。
内容的提问来源于stack exchange,提问作者YetAnotherQuestion
相关产品推荐
相关产品推荐

