首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为Ruby配置read_timeout和open_timeout?

如何为Ruby配置read_timeout和open_timeout?
EN

Stack Overflow用户
提问于 2019-08-22 20:27:02
回答 1查看 5.7K关注 0票数 3

当通过Watir调用goto()时,我得到了这个异常:

代码语言:javascript
运行
复制
Net::ReadTimeout with #<TCPSocket:(closed)>
    /usr/lib/ruby/2.6.0/net/protocol.rb:217:in `rbuf_fill'
    /usr/lib/ruby/2.6.0/net/protocol.rb:191:in `readuntil'
    /usr/lib/ruby/2.6.0/net/protocol.rb:201:in `readline'
    /usr/lib/ruby/2.6.0/net/http/response.rb:40:in `read_status_line'
    /usr/lib/ruby/2.6.0/net/http/response.rb:29:in `read_new'
    /usr/lib/ruby/2.6.0/net/http.rb:1509:in `block in transport_request'
    /usr/lib/ruby/2.6.0/net/http.rb:1506:in `catch'
    /usr/lib/ruby/2.6.0/net/http.rb:1506:in `transport_request'
    /usr/lib/ruby/2.6.0/net/http.rb:1479:in `request'
    /var/lib/gems/2.6.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/remote/http/default.rb:129:in `response_for'
    /var/lib/gems/2.6.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/remote/http/default.rb:82:in `request'
    /var/lib/gems/2.6.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/remote/http/common.rb:64:in `call'
    /var/lib/gems/2.6.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/remote/bridge.rb:167:in `execute'
    /var/lib/gems/2.6.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/remote/w3c/bridge.rb:567:in `execute'
    /var/lib/gems/2.6.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/remote/w3c/bridge.rb:59:in `get'
    /var/lib/gems/2.6.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/common/navigation.rb:32:in `to'
    /var/lib/gems/2.6.0/gems/watir-6.16.5/lib/watir/navigation.rb:16:in `goto'

似乎我可以修改超时,但我不明白怎么做。

它们使用这里,但我如何配置它们?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-23 07:26:53

您可以参考文档Ruby-绑定:内部超时

从文档:内部超时,WebDriver使用HTTP与许多驱动程序( JsonWireProtocol)进行通信。默认情况下,使用来自Ruby标准库的Net::HTTP,默认超时时间为60秒。如果在加载时间超过60秒的页面上调用例如Driver#get、Driver#click,您将看到从Net::HTTP引发的超时值::Driver#click。您可以通过以下操作配置此超时(在启动浏览器之前):

代码语言:javascript
运行
复制
  client = Selenium::WebDriver::Remote::Http::Default.new
  client.read_timeout = 120 # seconds
  driver = Selenium::WebDriver.for :remote, http_client: client

在瓦蒂尔,这可能就像

代码语言:javascript
运行
复制
caps = Selenium::WebDriver::Remote::Capabilities.chrome          
client = Selenium::WebDriver::Remote::Http::Default.new
client.read_timeout = 600 
client.open_timeout = 600 
driver =  Watir::Browser.new :chrome, :desired_capabilities => caps, 
:http_client => client
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57616621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档