gpt4 book ai didi

ruby - Net::ReadTimeout on headless Firefox Watir-WebDriver cukes

转载 作者:IT王子 更新时间:2023-10-29 00:01:56 26 4
gpt4 key购买 nike

我今天开始遇到这些错误:

Net::ReadTimeout (Net::ReadTimeout)
/usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:158:in `rescue in rbuf_fill'
/usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:152:in `rbuf_fill'
/usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:134:in `readuntil'
/usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:144:in `readline'
/usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http/response.rb:39:in `read_status_line'
/usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http/response.rb:28:in `read_new'
/usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1405:in `block in transport_request'
/usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1402:in `catch'
/usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1402:in `transport_request'
/usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1375:in `request'
/usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1368:in `block in request'
/usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:851:in `start'
/usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1366:in `request'

我在 Firefox 21、Ubuntu 服务器上 headless 运行(通过 headless gem)Watir-WebDriver cukes。这是活跃的 gem 包:

Gems included by the bundle:
* builder (3.2.2)
* bundler (1.3.5)
* childprocess (0.3.9)
* cucumber (1.3.2)
* cwtestgen (0.1.6)
* data_magic (0.14)
* diff-lcs (1.2.4)
* faker (1.1.2)
* ffi (1.8.1)
* gherkin (2.12.0)
* headless (1.0.1)
* i18n (0.6.4)
* multi_json (1.7.5)
* page-object (0.8.10)
* page_navigation (0.9)
* require_all (1.2.1)
* rspec (2.13.0)
* rspec-core (2.13.1)
* rspec-expectations (2.13.0)
* rspec-mocks (2.13.1)
* rubyzip (0.9.9)
* selenium-webdriver (2.33.0)
* syntax (1.0.0)
* thor (0.18.1)
* watir-webdriver (0.6.4)
* watir-webdriver-performance (0.2.2)
* websocket (1.0.7)
* yml_reader (0.2)

我什至不知道从哪里开始解决这个问题。超时是随机的。当我在 OS X(非 headless )的 Firefox 21 上运行这些测试时,它们不会发生。有谁之前经历过这个吗?非常感谢任何和所有想法 - 谢谢!

最佳答案

我遇到了这个问题。我不知道为什么会这样,但我找到了解决办法。我只是终止 watir 浏览器和 headless ,然后我重试。问题是 watir 失去了与浏览器的连接,因此无法终止。我认为这是最初问题的一部分。为了终止 watir 浏览器,我使用 YAML 转储浏览器对象,然后解析结果以找到模拟浏览器的 pid。完成后,kill 命令将发送到正确的 pid。最后浏览器和 headless 被重新初始化。

tryLeft = 3
begin
@watir.goto url
rescue => error
tryLeft -= 1

if tryLeft >= 0
sleep 1
retry
end

begin
Timeout::timeout(2) { @watir.close }
rescue
File.open(@tmpDumpFile, 'w') { |file| file << YAML::dump(@watir) }
`awk '/pid:/ {print $2;}' "#{@tmpDumpFile}" | xargs -rt kill 2>&1`
FileUtils.rm_f(@tmpDumpFile)
end

@headless.stop
`killall Xvfb 2>&1`

# Reinitialize @watir / @headless then retry
end

关于ruby - Net::ReadTimeout on headless Firefox Watir-WebDriver cukes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16906174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com