Win10下R调用Selenium连接Chrome报错:无法找到Chrome二进制文件
解决R中Selenium连接Chrome时报"cannot find Chrome binary"的问题
我来帮你搞定这个问题!从报错信息能看出来,核心问题是ChromeDriver找不到Chrome的二进制执行文件(chrome.exe)。哪怕你已经把路径加到环境变量里,Selenium有时候还是没法自动识别,咱们可以通过以下几种方式解决:
1. 显式指定Chrome二进制文件路径
在调用remoteDr的时候,直接通过chromeOptions参数把你的chrome.exe路径传进去就行。比如你的Chrome安装在默认路径的话,代码可以这么写:
# 替换成你实际的chrome.exe路径,注意用正斜杠或者双反斜杠 chrome_binary_path <- "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe" # 连接浏览器时指定路径 sel <- remoteDr( browserName = "chrome", port = 4567, chromeOptions = list(binary = chrome_binary_path) )
2. 确保ChromeDriver和Chrome版本完全匹配
你的Chrome是74.0.3729.61,ChromeDriver用的是74.0.3729.6,大版本是对的,但有时候小版本差异也可能出问题。你可以重新下载对应Chrome 74的最新ChromeDriver版本,然后把它的路径加到系统PATH里,或者在启动Selenium服务时指定驱动版本:
# 启动服务时指定ChromeDriver版本 selServ <- selenium( chromever = "74.0.3729.6", # 对应你的Chrome版本的驱动 geckover = NULL, # 不用Firefox的话设为NULL phantomver = NULL )
3. 换用RSelenium的rsDriver启动服务
如果用seleniumPipes的方式还是不行,试试RSelenium自带的rsDriver,它会自动帮你处理驱动和浏览器的匹配问题,用起来更省心:
library(RSelenium) # 启动Chrome服务,指定驱动版本 rD <- rsDriver( browser = "chrome", chromever = "74.0.3729.6" ) # 连接到浏览器 sel <- rD$client
最后再检查这几点
- 确认环境变量
PATH里真的包含chrome.exe和chromedriver.exe的路径,添加完最好重启R或者电脑让配置生效; - 如果你的Chrome装在非默认路径(比如自定义文件夹),一定要在代码里显式指定二进制文件路径,不然Selenium找不到它。
内容的提问来源于stack exchange,提问作者captcoma
相关产品推荐
相关产品推荐

