You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:RSelenium连接localhost端口3918被拒绝问题的解决方法

解决RSelenium连接Chrome失败的问题

问题背景

这段运行多年的RSelenium代码突然报错,之前遇到同类问题时更新R/RStudio就能解决,但此次无效。

原代码

library(chromote) # to get the chrome version
library(netstat) # to dynamically change ports
library(RSelenium) # to run Selenium

b <- ChromoteSession$new()
browser_version <- b$Browser$getVersion()$product
browser_version<-gsub(".*/","",browser_version)

realVersion <- substr(browser_version,1,3)

chromeVersions <- binman::list_versions("chromedriver")
chromeVersions <- chromeVersions$win32

realChromeVer <-chromeVersions[which(substr(chromeVersions,1,3)==realVersion)]

driver <- rsDriver(browser = 'chrome', port = free_port(random = TRUE), chromever = realChromeVer[1], verbose = F)
remdr <- driver[['client']]
remdr$maxWindowSize()

错误信息

Could not open chrome browser.
Client error message:
Undefined error in httr call. httr output: Failed to connect to localhost port 3918: Connection refused
Check server log for further details.
Warning message:
In rsDriver(browser = "chrome", port = free_port(random = TRUE),  :
  Could not determine server status.

解决方案

  • 严格匹配ChromeDriver与Chrome版本
    你的代码仅截取版本前3位匹配,但ChromeDriver要求与Chrome主版本完全一致(比如Chrome是114.0.5735.199,ChromeDriver也需是114.x.x.x)。可直接让RSelenium自动匹配最新兼容版本:

    driver <- rsDriver(browser = 'chrome', port = free_port(random = TRUE), chromever = "latest", verbose = F)
    

    或用wdman先验证版本兼容性:

    library(wdman)
    # 查看可用ChromeDriver版本
    print(binman::list_versions("chromedriver")$win32)
    # 启动服务并确认版本
    chrome_svc <- chrome(chromever = realChromeVer[1])
    
  • 排查端口问题
    free_port()偶尔会返回被占用的端口,手动指定常用端口(如4444)测试:

    driver <- rsDriver(browser = 'chrome', port = 4444, chromever = realChromeVer[1], verbose = F)
    

    同时检查系统防火墙是否阻止本地端口连接,Windows用户可通过命令行netstat -ano | findstr :4444查看端口占用情况,若有则杀掉对应进程。

  • 升级所有相关包
    旧版本的RSelenium、chromote或binman可能与新版Chrome不兼容,执行以下命令更新:

    update.packages(c("RSelenium", "chromote", "netstat", "binman", "wdman"), ask = FALSE)
    
  • 手动启动ChromeDriver服务
    绕过rsDriver的自动启动逻辑,手动启动服务再连接客户端:

    library(RSelenium)
    library(wdman)
    # 启动ChromeDriver服务
    chrome_svc <- chrome(port = 4444, chromever = realChromeVer[1], verbose = TRUE)
    # 连接客户端
    remdr <- remoteDriver(port = 4444, browserName = "chrome")
    remdr$open()
    remdr$maxWindowSize()
    # 用完记得停止服务
    # chrome_svc$stop()
    
  • 清理Chrome残留进程
    打开任务管理器,杀掉所有Chrome相关进程(包括后台的chrome.exe),再重新运行代码,避免残留进程占用资源。

内容的提问来源于stack exchange,提问作者IMB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:20:37