RSelenium调用rsDriver启动Chrome浏览器超时报错解决方案问询
解决方案
- 修复Chrome版本匹配问题
报错提示driver.version: unknown核心原因大多是chromever="latest"无法匹配你本地安装的Chrome浏览器版本,按以下操作:- 打开Chrome浏览器,进入「设置 > 关于Google Chrome」,查看完整版本号,例如
119.0.6045.105 - 将代码中的
chromever参数替换为你查到的具体版本号:
client_server <- RSelenium::rsDriver(browser="chrome", chromever="119.0.6045.105", port=4444L, verbose=F)- 若提示对应版本不存在,可运行
wdman::chrome_available()查看支持的所有ChromeDriver版本,选择和你本地Chrome大版本一致的即可。
- 打开Chrome浏览器,进入「设置 > 关于Google Chrome」,查看完整版本号,例如
- 升级依赖包与运行环境
你使用的Selenium为2019年的4.0.0-alpha预览版,兼容性较差:- 先升级RSelenium与配套依赖包:
install.packages(c("RSelenium", "wdman"))- 升级本地Java版本到11及以上,老旧的Java 8 31版本与新Selenium/ChromeDriver兼容性存在缺陷。
- 解决Mac系统权限拦截问题
Mac默认会拦截未经过公证的ChromeDriver运行,导致启动超时:- 运行
wdman::chrome()查看默认ChromeDriver的本地存储路径 - 打开访达定位到对应路径,右键点击ChromeDriver文件,选择「打开」,确认允许运行后关闭窗口即可
也可以直接在终端执行权限解除命令:
sudo xattr -d com.apple.quarantine 替换为你的ChromeDriver路径 - 运行
- 清理残留进程后改用更稳定的启动方式
若之前启动失败有残留进程占用资源,即使更换端口也可能出现异常:- 终端执行
lsof -i :4444查看占用4444端口的进程ID,执行kill -9 进程ID结束残留进程 - 避免使用rsDriver的封装逻辑,改用手动启动Driver后连接的方式,稳定性更高:
# 启动ChromeDriver服务 drv <- wdman::chrome(port = 4444L, version = "你的Chrome对应版本号") # 连接Driver remDr <- RSelenium::remoteDriver(browserName = "chrome", port = 4444L) remDr$open() # 测试访问 remDr$navigate("https://www.baidu.com") # 使用完成后关闭资源 remDr$close() drv$stop() - 终端执行
- 关闭全局代理
全局代理会导致Selenium无法连接本地Driver服务,运行代码前关闭系统全局代理再试。
内容的提问来源于stack exchange,提问作者Ezra
相关产品推荐
相关产品推荐

