Firefox 在windows 8的后台运行时,Watir测试失败

Firefox 在windows 8的后台运行时,Watir测试失败,firefox,selenium,jenkins,watir,Firefox,Selenium,Jenkins,Watir,我正在firefox中运行Watir测试,使用的是一个jenkins slave,作为服务安装在Windows8虚拟机中 测试用例包括两个测试。当我手动运行它们时,一切正常。当jenkins运行它们时,第一个测试总是成功,第二个测试总是失败,出现异常:Net::ReadTimeout:Net::ReadTimeout 我尝试了测试代码和begin/rescue块的不同组合,但每次异常都是由浏览器对象方法引起的: @browser.goto @browser.execute_script @bro

我正在firefox中运行Watir测试,使用的是一个jenkins slave,作为服务安装在Windows8虚拟机中

测试用例包括两个测试。当我手动运行它们时,一切正常。当jenkins运行它们时,第一个测试总是成功,第二个测试总是失败,出现异常:
Net::ReadTimeout:Net::ReadTimeout

我尝试了测试代码和
begin/rescue
块的不同组合,但每次异常都是由浏览器对象方法引起的:

@browser.goto
@browser.execute_script
@browser.wait_until_present
@browser.close
...
设置和拆卸是:

def teardown
  @browser.close
end
def setup
  profile = Selenium::WebDriver::Firefox::Profile.new
  profile.add_extension @extension_path
  @browser = Watir::Browser.new :firefox, :profile => profile
end
gems版本:

watir (4.0.2)
selenium-webdriver (2.33.0)
我还尝试在启用桌面交互的系统帐户和本地用户帐户下运行该服务

其中一个错误日志:

> Net::ReadTimeout: Net::ReadTimeout
    C:/Ruby200-x64/lib/ruby/2.0.0/net/protocol.rb:158:in `rescue in rbuf_fill'
    C:/Ruby200-x64/lib/ruby/2.0.0/net/protocol.rb:152:in `rbuf_fill'
    C:/Ruby200-x64/lib/ruby/2.0.0/net/protocol.rb:134:in `readuntil'
    C:/Ruby200-x64/lib/ruby/2.0.0/net/protocol.rb:144:in `readline'
    C:/Ruby200-x64/lib/ruby/2.0.0/net/http/response.rb:39:in `read_status_line'
    C:/Ruby200-x64/lib/ruby/2.0.0/net/http/response.rb:28:in `read_new'
    C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:1406:in `block in transport_request'
    C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:1403:in `catch'
    C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:1403:in `transport_request'
    C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:1376:in `request'
    C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:1369:in `block in request'
    C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:852:in `start'
    C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:1367:in `request'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/http/default.rb:83:in `response_for'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/http/default.rb:39:in `request'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/bridge.rb:629:in `raw_execute'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/bridge.rb:607:in `execute'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/bridge.rb:195:in `quit'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/firefox/bridge.rb:55:in `quit'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/common/driver.rb:168:in `quit'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/watir-webdriver-0.6.4/lib/watir-webdriver/browser.rb:135:in `close'
    C:/jenkins/workspace/tests_matrix/TEST_BROWSER/firefox/TEST_OS/windows8/build_script_win/tests/test_case2.rb:173:in `teardown'
    C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:1316:in `block in run'
    C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:1314:in `each'
    C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:1314:in `run'
    C:/Ruby200-x64/lib/ruby/2.0.0/test/unit/testcase.rb:17:in `run'
    C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:919:in `block in _run_suite'
    C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:912:in `map'
    C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:912:in `_run_suite'
    C:/Ruby200-x64/lib/ruby/2.0.0/test/unit.rb:657:in `block in _run_suites'
    C:/Ruby200-x64/lib/ruby/2.0.0/test/unit.rb:655:in `each'
    C:/Ruby200-x64/lib/ruby/2.0.0/test/unit.rb:655:in `_run_suites'
    C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:867:in `_run_anything'
    C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:1060:in `run_tests'
    C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:1047:in `block in _run'
    C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:1046:in `each'
    C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:1046:in `_run'
    C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:1035:in `run'
    C:/Ruby200-x64/lib/ruby/2.0.0/test/unit.rb:21:in `run'
    C:/Ruby200-x64/lib/ruby/2.0.0/test/unit.rb:774:in `run'
    C:/Ruby200-x64/lib/ruby/2.0.0/test/unit.rb:834:in `run'
    C:/Ruby200-x64/lib/ruby/2.0.0/test/unit.rb:838:in `run'
    C:/Users/test/AppData/Local/Temp/hudson2953103359547849695.sh:4:in `<main>'
Net::ReadTimeout:Net::ReadTimeout C:/Ruby200-x64/lib/ruby/2.0.0/net/protocol.rb:158:in“rbuf_-fill中的救援” C:/Ruby200-x64/lib/ruby/2.0.0/net/protocol.rb:152:in'rbuf_fill' C:/Ruby200-x64/lib/ruby/2.0.0/net/protocol.rb:134:in'readuntil' C:/Ruby200-x64/lib/ruby/2.0.0/net/protocol.rb:144:in'readline' C:/Ruby200-x64/lib/ruby/2.0.0/net/http/response.rb:39:in'read_status_line' C:/Ruby200-x64/lib/ruby/2.0.0/net/http/response.rb:28:in'read_new' C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:1406:in'block in transport_request' C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:1403:in'catch' C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:1403:在“传输请求”中 C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:1376:in'request' C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:1369:in'block in request' C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:852:in'start' C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:1367:in'request' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/http/default.rb:83:in“response_for” C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/http/default.rb:39:in'request' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/http/common.rb:40:in'call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/bridge.rb:629:in'raw_execute' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/bridge.rb:607:in'execute' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/bridge.rb:195:in'quit' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/firefox/bridge.rb:55:in'quit' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/common/driver.rb:168:in'quit' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/watir-webdriver-0.6.4/lib/watir-webdriver/browser.rb:135:在“关闭”中 C:/jenkins/workspace/tests\u matrix/TEST\u BROWSER/firefox/TEST\u OS/windows8/build\u script\u win/tests/tests\u case2.rb:173:in'teardown' C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:1316:in'block in run' C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:1314:in'each' C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:1314:in'run' C:/Ruby200-x64/lib/ruby/2.0.0/test/unit/testcase.rb:17:in'run' C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:919:in'block in_run_suite' C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:912:in'map' C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:912:in``运行套件' C:/Ruby200-x64/lib/ruby/2.0.0/test/unit.rb:657:in'block-in_-run_-suites' C:/Ruby200-x64/lib/ruby/2.0.0/test/unit.rb:655:in'each' C:/Ruby200-x64/lib/ruby/2.0.0/test/unit.rb:655:在“运行套件”中 C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:867:在“运行”中 C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:1060:in'run_tests' C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:1047:in'block in_run' C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:1046:in'each' C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:1046:在“运行”中 C:/Ruby200-x64/lib/ruby/2.0.0/minitest/unit.rb:1035:in'run' C:/Ruby200-x64/lib/ruby/2.0.0/test/unit.rb:21:in'run' C:/Ruby200-x64/lib/ruby/2.0.0/test/unit.rb:774:in'run' C:/Ruby200-x64/lib/ruby/2.0.0/test/unit.rb:834:in'run' C:/Ruby200-x64/lib/ruby/2.0.0/test/unit.rb:838:in'run' C:/Users/test/AppData/Local/Temp/hudson2953103359547849695.sh:4:in`'
我也遇到了Net::ReadTimeout错误,并试图在捕获Net::ReadTimeout错误后通过刷新浏览器来修复它,如下所示:

begin
  @browser.goto WEBSITE
rescue Net::ReadTimeout
  @browser.refresh
  sleep 1 unless @browser.ready_state == "complete"
end
我认为如果你发布测试用例代码,也许它会有助于达成解决方案