Windows 11环境下RSelenium启动Chrome失败问题求助
问题:RSelenium无法在Windows 11启动Chrome浏览器
在Windows 11设备(台式机和笔记本)上使用RSelenium启动Chrome浏览器失败,但Firefox可正常运行。已完成以下排查操作:
- 确认Chromedriver版本与Chrome版本(通过
chrome://version/查看)匹配(版本为110.0.5481.30) - 使用
netstat库的free_port()函数分配可用端口,也手动更换过端口 - 删除了
C:\Users\Usuario\AppData\Local\binman下的文件并刷新DNS - 该问题在多台Windows 11设备(自己的台式机、笔记本及朋友的笔记本)上均出现
相关代码
pacman::p_load(tidyverse, RSelenium, netstat) # free port function rs_driver_object = rsDriver(browser = "chrome", chromever = "110.0.5481.30", verbose = FALSE, port = free_port()) remdr = rs_driver_object$client
错误信息
Could not open chrome browser. Client error message: Undefined error in httr call. httr output: Failed to connect to localhost port 14415: Connection refused Check server log for further details. Warning message: In rsDriver(browser = "chrome", chromever = "110.0.5481.30", verbose = FALSE, : Could not determine server status.
可能的解决方法
启用verbose模式查看详细日志
将rsDriver中的verbose参数设为TRUE,获取服务器端详细日志,定位具体失败原因,比如Chrome启动参数错误、权限问题等。指定Chrome二进制文件路径
如果系统存在多个Chrome版本,可能导致Chromedriver找不到正确程序。可通过extraCapabilities指定Chrome绝对路径:chrome_options = list( chromeOptions = list( binary = "C:/Program Files/Google/Chrome/Application/chrome.exe" ) ) rs_driver_object = rsDriver(browser = "chrome", chromever = "110.0.5481.30", verbose = TRUE, port = free_port(), extraCapabilities = chrome_options)添加Chrome启动参数
尝试添加无沙箱、禁用GPU等参数,规避Windows权限或图形渲染问题:chrome_options = list( chromeOptions = list( args = c("--no-sandbox", "--disable-gpu", "--disable-dev-shm-usage") ) ) rs_driver_object = rsDriver(browser = "chrome", chromever = "110.0.5481.30", verbose = TRUE, port = free_port(), extraCapabilities = chrome_options)检查Windows Defender防火墙设置
防火墙可能阻止RSelenium与Chromedriver的本地连接,可临时关闭防火墙测试,或给R程序、Chromedriver添加防火墙允许规则。更新RSelenium及依赖包
运行update.packages(c("RSelenium", "httr", "netstat"))更新所有相关包,确保版本兼容。手动启动Chromedriver再连接
打开命令提示符,运行下载好的Chromedriver(路径一般为C:\Users\Usuario\AppData\Local\binman\binman_chromedriver\win32\110.0.5481.30\chromedriver.exe),然后在R中直接连接:remdr = remoteDriver(browserName = "chrome", port = 9515) # 默认端口9515 remdr$open()
内容的提问来源于stack exchange,提问作者alejandro cardiles
相关产品推荐
相关产品推荐

