如何为Chrome 115.0及更高版本安装并指定RSelenium适配的ChromeDriver版本
多数RSelenium配置Chrome服务的教程,都会建议将Chrome驱动版本设为latest或已安装的驱动版本,示例代码如下:
# 使用最新驱动 rsDriver(browser = c("chrome"), chromever = "latest", port = free_port()) # 指定特定版本 rsDriver(browser = c("chrome"), chromever = "114.002.03.200", port = free_port())
甚至不少教程会指导用binman::list_versions("chromedriver")查看已安装的驱动版本,再将其中一个版本作为chromever参数值。但这种方式很容易出现版本不匹配的问题——比如你的Chrome浏览器版本(通过chrome://version查看)已经是124.0.6362.00,但binman::list_versions()显示的已安装驱动版本都低于115.0,此时运行代码就会抛出错误:
Selenium message:session not created: This version of ChromeDriver only supports Chrome version 114.
Current browser version is 124.0.6362.00.
下面是几种解决版本不匹配问题的实用方法:
方法1:自动匹配对应版本的ChromeDriver
RSelenium支持通过chromever = "autodetect"参数自动检测本地Chrome浏览器版本,并下载适配的驱动,无需手动指定版本号:
library(RSelenium) rsDriver(browser = "chrome", chromever = "autodetect", port = free_port())
方法2:手动下载适配驱动并指定路径
如果自动检测失效,可以手动操作:
- 打开Chrome,在地址栏输入
chrome://version,查看浏览器完整版本号(如124.0.6362.00) - 下载与浏览器主版本号一致的ChromeDriver(比如浏览器是124.x,就下载124.x系列的驱动)
- 将解压后的ChromeDriver文件放到指定路径,然后在
rsDriver中直接指定驱动路径:
library(RSelenium) driver <- rsDriver( browser = "chrome", port = free_port(), chromever = NULL, # 禁用自动管理的驱动 driverPath = "C:/your/path/to/chromedriver.exe" # 替换为你的chromedriver实际路径 )
方法3:更新binman的驱动版本列表
如果binman::list_versions("chromedriver")显示的版本不全,是因为binman的本地缓存未更新,可通过以下命令强制刷新:
# 删除旧的驱动缓存 binman::rm_platform("chromedriver") # 重新拉取最新版本列表并安装 binman::list_versions("chromedriver")
之后再使用chromever = "latest"即可下载适配最新Chrome的驱动。
内容的提问来源于stack exchange,提问作者socialscientist

