RSelenium创建服务器失败求助:rsDriver报错及连接被拒
RSelenium初始化失败问题排查与解决
问题背景
此前RSelenium运行正常,近期出现异常,已更新核心R包及Java环境,问题仍未解决。
执行代码
library(wdman) library(RSelenium) library(xml2) library(selectr) library(httr) library(jsonlite) #start RSelenium remDr <- rsDriver( port = 4445L, browser = "firefox" ) #remDr$open() remDr <- remoteDriver(port = 4445L,browser = "firefox")
错误信息
1. rsDriver初始化报错
checking Selenium Server versions: BEGIN: PREDOWNLOAD BEGIN: DOWNLOAD BEGIN: POSTDOWNLOAD checking chromedriver versions: BEGIN: PREDOWNLOAD BEGIN: DOWNLOAD BEGIN: POSTDOWNLOAD checking geckodriver versions: BEGIN: PREDOWNLOAD Error in (function (url, platform, history, appname, platformregex = platform, : unused argument (fileregex = "\\.(gz|zip)$")
2. remoteDriver连接失败
执行remDr$open()后输出:
[1] "Connecting to remote server" Error in checkError(res) : Undefined error in httr call. httr output: Failed to connect to localhost port 4445: Connection refused
会话信息
sessionInfo()
输出:
R version 4.1.2 (2021-11-01) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 10 x64 (build 19044) Matrix products: default locale: [1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 [3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C [5] LC_TIME=English_United States.1252 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] jsonlite_1.8.4 httr_1.4.4 selectr_0.4-2 xml2_1.3.3 RSelenium_1.7.9 [6] wdman_0.2.6 loaded via a namespace (and not attached): [1] Rcpp_1.0.9 binman_0.1.2 assertthat_0.2.1 rappdirs_0.3.3 bitops_1.0-7 [6] R6_2.5.1 semver_0.2.0 magrittr_2.0.3 stringi_1.7.6 curl_4.3.2 [11] tools_4.1.2 stringr_1.4.0 yaml_2.3.5 compiler_4.1.2 caTools_1.18.2
解决方案
修复
fileregex参数错误
该错误源于wdman与binman版本不兼容,当前wdman 0.2.6需要更高版本的binman支持。执行以下命令更新binman:install.packages("binman")更新后重启R会话,再尝试运行
rsDriver。解决连接拒绝问题
- 不要跳过
rsDriver初始化直接使用remoteDriver,remoteDriver依赖rsDriver启动的Selenium服务,正确流程是通过rsDriver$client操作浏览器:remDr <- rsDriver(port = 4446L, browser = "firefox") client <- remDr$client client$open() - 检查端口4445是否被占用,Windows下可在命令行执行
netstat -ano | findstr :4445查看,若被占用则更换rsDriver的端口参数(如4446L)。 - 确保Firefox版本与geckodriver版本兼容,可手动下载对应版本的geckodriver,在
rsDriver中指定路径:remDr <- rsDriver( port = 4446L, browser = "firefox", geckover = "匹配的版本号", geckodriver = "本地geckodriver.exe的完整路径" )
- 不要跳过
内容的提问来源于stack exchange,提问作者user007
相关产品推荐
相关产品推荐

