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

Ruby/Rails配置远程Selenium报错Net::ReadTimeout求助

解决Ruby/Rails连接远程Selenium Chrome超时问题

针对你遇到的Net::ReadTimeout错误(即使Grid界面显示会话已创建),可尝试以下几个方向排查修复:

  • 修正远程连接URL
    多数Selenium standalone镜像要求连接路径为/wd/hub,直接使用根路径可能导致后续通信异常。修改URL为:

    driver = Selenium::WebDriver.for :remote, url: 'http://192.168.0.40:4444/wd/hub', options: options
    
  • 调整Ruby网络超时参数
    默认的Net::HTTP超时时间可能不足以等待Chrome完全启动或响应,可手动延长超时时长:

    client = Selenium::WebDriver::Remote::Http::Default.new
    client.read_timeout = 30 # 可根据实际情况调整,比如设为60秒
    driver = Selenium::WebDriver.for :remote, 
                                     url: 'http://192.168.0.40:4444/wd/hub', 
                                     options: options, 
                                     http_client: client
    
  • 优化容器Chrome运行配置
    容器内的Chrome易受资源限制影响,需从容器启动和代码配置两方面优化:

    1. 重启Docker容器时添加共享内存参数,避免/dev/shm不足导致Chrome卡顿:
      docker run -d -p 4444:4444 --shm-size=2g selenium/standalone-chrome
      
    2. 在Ruby代码中启用新版headless模式并完善参数(更适配容器环境):
      options = Selenium::WebDriver::Chrome::Options.new
      options.add_argument('--headless=new') # 新版headless兼容性更好
      options.add_argument('--no-sandbox')
      options.add_argument('--disable-dev-shm-usage')
      options.add_argument('--disable-gpu')
      
  • 校验版本兼容性
    确保本地Ruby的selenium-webdriver gem版本与Docker镜像中的Selenium版本匹配。比如镜像使用Selenium 4.x,gem也需对应4.x版本,版本差异可能引发通信协议不兼容问题。

  • 排查局域网网络稳定性
    虽然会话能创建,但局域网内的网络延迟或丢包可能导致后续请求超时。可通过nc -zv 192.168.0.40 4444测试持续连通性,确认网络状态正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 06:32:42