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

macOS下RSelenium运行失败:更新Java后出现httr调用未定义错误

解决macOS更新Java后RSelenium无法连接Firefox的问题

问题背景

更新Java前,使用rsDriver启动Selenium连接Firefox一切正常;更新Java后出现连接失败,报错端口4410被拒绝,且因需从目标网站下载内容无法使用Docker。

错误日志

rs_driver_object=rsDriver(browser="firefox", port=4410L, verbose=TRUE)
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
[1] "Connecting to remote server"
Could not open firefox browser.
Client error message:
Undefined error in httr call. httr output: Failed to connect to localhost port 4410 after 0 ms: Connection refused
Check server log for further details.
Warning message:
In rsDriver(browser = "firefox", port = 4410L, verbose = TRUE) :

解决步骤

1. 验证Java与Selenium版本兼容性

  • 查看当前Java版本:
    java -version
    
  • Selenium版本对Java有明确要求:
    • Selenium 3.x 最高兼容Java 11,不支持Java 17+
    • Selenium 4.x 支持Java 8、11、17
  • 若使用旧版Selenium,要么降级Java到11,要么升级Selenium到4.x版本。

2. 手动指定兼容的Selenium Server版本

在rsDriver中明确指定与当前Java匹配的Selenium版本,示例:

rs_driver_object <- rsDriver(
  browser = "firefox",
  port = 4410L,
  verbose = TRUE,
  version = "4.10.0" # 替换为兼容的版本号
)

3. 确保Geckodriver与Firefox、Selenium兼容

  • 检查Firefox版本,下载对应版本的Geckodriver
  • 手动指定Geckodriver路径:
    rs_driver_object <- rsDriver(
      browser = "firefox",
      port = 4410L,
      verbose = TRUE,
      geckodriver = "/usr/local/bin/geckodriver" # 替换为你的Geckodriver路径
    )
    

4. 检查端口占用情况

  • 查看端口4410是否被其他进程占用:
    lsof -i :4410
    
  • 若有占用进程,执行kill -9 <PID>杀掉进程,或者更换端口(比如4411)重新尝试。

5. 手动启动Selenium Server再连接

先通过命令行手动启动Selenium Server(指定兼容的Java版本和Selenium包):

java -jar selenium-server-standalone-4.10.0.jar --port 4410

然后在R中直接连接已启动的服务器:

library(RSelenium)
remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4410L, browserName = "firefox")
remDr$open()

6. 检查macOS安全权限

更新Java后,macOS可能阻止了Selenium或Geckodriver运行:

  • 打开系统偏好设置 > 安全性与隐私
  • 查看是否有提示“已阻止geckodriver/selenium-server运行”,点击“允许”即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:45:40