RSelenium无法连接远程服务器,启动Chrome驱动失败求助
RSelenium启动Chrome驱动报错的解决思路
问题重现
之前正常运行的RSelenium启动代码现在报错:
library(RSelenium) library(rvest) library(tidyverse) driver <- rsDriver(port = 4845L, browser = "chrome", version = "3.141.59") remdriv <- driver$client
报错信息
运行后返回错误:
checking Selenium Server versions: BEGIN: PREDOWNLOAD BEGIN: DOWNLOAD BEGIN: POSTDOWNLOAD checking chromedriver versions: BEGIN: PREDOWNLOAD BEGIN: DOWNLOAD BEGIN: POSTDOWNLOAD checking geckodriver versions: BEGIN: PREDOWNLOAD BEGIN: DOWNLOAD BEGIN: POSTDOWNLOAD checking phantomjs versions: BEGIN: PREDOWNLOAD BEGIN: DOWNLOAD BEGIN: POSTDOWNLOAD Warning: Could not determine server status.[1] "Connecting to remote server" Could not open chrome browser. Client error message: Undefined error in httr call. httr output: Failed to connect to localhost port 4845: Connection refused Check server log for further details.
排查日志
使用wdman查看Selenium服务日志,发现Java无法找到主类,问题出在chromedriver路径的参数解析上:
library(wdman) selServ <- wdman::selenium(verbose = FALSE) selServ$log()
日志输出:
$stderr [1] "Error: Could not find or load main class c(-Dwebdriver.chrome.driver=\"C:\\Users\\Name\\AppData\\Local\\binman\\binman_chromedriver\\win32\\109.0.5414.25.chromedriver.exe\"," [2] "Caused by: java.lang.ClassNotFoundException: c(-Dwebdriver.chrome.driver=\"C:\\Users\\Name\\AppData\\Local\\binman\\binman_chromedriver\\win32\\109.0.5414.25.chromedriver.exe\"," $stdout character(0)
解决思路
1. 修正参数指定方式
RSelenium新版本中,version参数对应Selenium Server版本,chromedriver版本需要用chromever参数单独指定,不要混用。示例:
# 先确认本地Chrome版本(设置→关于Chrome),比如109.0.5414.25 driver <- rsDriver( port = 4845L, browser = "chrome", version = "3.141.59", # Selenium Server版本 chromever = "109.0.5414.25" # 对应Chrome版本的chromedriver ) remdriv <- driver$client
2. 清理旧驱动缓存并重新下载
删除binman存储的旧chromedriver文件,路径为C:\\Users\\Name\\AppData\\Local\\binman\\binman_chromedriver,然后重新运行启动代码,让RSelenium自动下载匹配版本的驱动。
3. 升级相关包
RSelenium和wdman的旧版本可能存在参数解析bug,运行以下命令升级:
update.packages(c("RSelenium", "wdman"))
4. 手动指定驱动路径(备选)
如果自动下载仍有问题,手动下载对应版本的chromedriver,然后通过extraCapabilities指定路径:
driver <- rsDriver( port = 4845L, browser = "chrome", chromever = "109.0.5414.25", extraCapabilities = list( chromeOptions = list( binary = "C:/Program Files/Google/Chrome/Application/chrome.exe" ) ) )
内容的提问来源于stack exchange,提问作者matt_lnrd
相关产品推荐
相关产品推荐

