【问题标题】:Net::ReadTimeout when connecting remotely using selenium in Ruby在 Ruby 中使用 selenium 进行远程连接时的 Net::ReadTimeout
【发布时间】:2021-07-23 10:11:21
【问题描述】:

我想在 DockerCompose 上将 selenium 与 Ruby 一起使用,并在另一台服务器上使用 chrome,但出现错误。
以下是各种代码和错误。

  • DockerCompose.yml
version: "3"
services:
  ruby:
    build:
      context: .
      dockerfile: RubyDockerFile
    ports:
      - "3000:3000"
    tty: true
  chrome:
    image: selenium/standalone-chrome:4.0.0-beta-3-20210426
    container_name: chrome
    volumes:
      - /dev/shm:/dev/shm
    ports:
      - 4444:4444
      - 5900:5900
      - 7900:7900
  • RubyDocker 中的 Ruby 代码
driver = Selenium::WebDriver.for :remote, url: 'http://chrome:4444', desired_capabilities: :chrome
  • 错误
Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)>
/usr/local/bundle/gems/rack-mini-profiler-2.3.1/lib/patches/net_patches.rb:19:in `block in request_with_mini_profiler'
/usr/local/bundle/gems/rack-mini-profiler-2.3.1/lib/mini_profiler/profiling_methods.rb:46:in `step'
/usr/local/bundle/gems/rack-mini-profiler-2.3.1/lib/patches/net_patches.rb:18:in `request_with_mini_profiler'
/usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/default.rb:129:in `response_for'
/usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/default.rb:82:in `request'
/usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/common.rb:64:in `call'
/usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/bridge.rb:167:in `execute'
/usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/bridge.rb:102:in `create_session'
/usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/bridge.rb:56:in `handshake'
/usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/driver.rb:39:in `initialize'
/usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/common/driver.rb:58:in `new'
/usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/common/driver.rb:58:in `for'
/usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver.rb:88:in `for'
/hoge.rake:9:in `block (2 levels) in <main>'

【问题讨论】:

  • 当页面加载超过 60 秒时会发生此错误。您的页面加载时间是否超过 60 秒?
  • 感谢您的回复,我可以通过将超时设置为 180 秒而不是 120 秒来连接。非常感谢您的帮助。
  • 是的,就是这样。

标签: ruby docker selenium selenium-webdriver docker-compose


【解决方案1】:

如果我延长超时时间,我现在可以连接了。

    client = Selenium::WebDriver::Remote::Http::Default.new
    client.read_timeout = 180 # seconds
    driver = Selenium::WebDriver.for :remote, url: 'http://chrome:4444', desired_capabilities: :chrome, :http_client => client

【讨论】:

    猜你喜欢
    • 2014-12-08
    • 2018-12-12
    • 1970-01-01
    • 2015-02-06
    • 2011-02-26
    • 2016-06-05
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    相关资源
    最近更新 更多