Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Selenium Net::ReadTimeout_Ruby_Selenium_Jenkins_Cucumber_Capybara - Fatal编程技术网

Ruby Selenium Net::ReadTimeout

Ruby Selenium Net::ReadTimeout,ruby,selenium,jenkins,cucumber,capybara,Ruby,Selenium,Jenkins,Cucumber,Capybara,我正在使用Ruby/Cucumber/Capybara/Chromedriver运行自动化测试。自动测试由詹金斯进行。奇怪的是,有时浏览器会打开,但有一个黑屏,我看到Net::ReadTimeout,而浏览器没有关闭,所以占用了我的内存。我想实现的是,如果出现这种情况,必须关闭带有黑屏的浏览器。有什么建议吗? 这是我在詹金斯身上犯的错误: Net::ReadTimeout (Net::ReadTimeout) /var/lib/jenkins/.rbenv/versions/2.4.0/

我正在使用Ruby/Cucumber/Capybara/Chromedriver运行自动化测试。自动测试由詹金斯进行。奇怪的是,有时浏览器会打开,但有一个黑屏,我看到Net::ReadTimeout,而浏览器没有关闭,所以占用了我的内存。我想实现的是,如果出现这种情况,必须关闭带有黑屏的浏览器。有什么建议吗? 这是我在詹金斯身上犯的错误:

    Net::ReadTimeout (Net::ReadTimeout)
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/protocol.rb:176:in `rbuf_fill'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/protocol.rb:154:in `readuntil'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/protocol.rb:164:in `readline'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http/response.rb:40:in `read_status_line'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http/response.rb:29:in `read_new'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:1446:in `block in transport_request'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:1443:in `catch'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:1443:in `transport_request'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:1416:in `request'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:1409:in `block in request'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:877:in `start'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:1407:in `request'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/http/default.rb:124:in `response_for'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/http/default.rb:78:in `request'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/http/common.rb:63:in `call'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/bridge.rb:645:in `raw_execute'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/bridge.rb:109:in `create_session'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/bridge.rb:69:in `initialize'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/chrome/bridge.rb:42:in `initialize'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/common/driver.rb:61:in `new'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/common/driver.rb:61:in `for'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver.rb:82:in `for'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/capybara-2.11.0/lib/capybara/selenium/driver.rb:22:in `browser'
/var/lib/jenkins/workspace/autotest/features/support/env.rb:12:in `<top (required)>'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucumber/rb_support/rb_language.rb:96:in `load'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucumber/rb_support/rb_language.rb:96:in `load_code_file'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucumber/runtime/support_code.rb:142:in `load_file'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucumber/runtime/support_code.rb:84:in `block in load_files!'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucumber/runtime/support_code.rb:83:in `each'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucumber/runtime/support_code.rb:83:in `load_files!'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucumber/runtime.rb:253:in `load_step_definitions'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucumber/runtime.rb:61:in `run!'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucumber/cli/main.rb:32:in `execute!'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/bin/cucumber:8:in `<top (required)>'
/var/lib/jenkins/.rbenv/versions/2.4.0/bin/cucumber:22:in `load'
/var/lib/jenkins/.rbenv/versions/2.4.0/bin/cucumber:22:in `<main>'
Net::ReadTimeout(Net::ReadTimeout)
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/protocol.rb:176:in'rbuf_fill'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/protocol.rb:154:in'readuntil'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/protocol.rb:164:in'readline'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http/response.rb:40:在“读取状态行”中
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http/response.rb:29:in'read_new'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:1446:“传输请求中的块”
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:1443:in'catch'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:1443:在“传输请求”中
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:1416:在“请求”中
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:1409:“请求中的块”中
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:877:“开始”中
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:1407:在“请求”中
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/http/default.rb:124:in“response\u for”
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/http/default.rb:78:在“请求”中
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/http/common.rb:63:in'call'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/bridge.rb:645:in'raw_execute'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/bridge.rb:109:在“创建会话”中
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/bridge.rb:69:在“初始化”中
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/chrome/bridge.rb:42:在“初始化”中
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/common/driver.rb:61:“新建”
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/common/driver.rb:61:in'for'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver.rb:82:in'for'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/capybara-2.11.0/lib/capybara/selenium/driver.rb:22:在“浏览器”中
/var/lib/jenkins/workspace/autotest/features/support/env.rb:12:in`'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucumber/rb_support/rb_language.rb:96:在“加载”中
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucumber/rb_support/rb_language.rb:96:在“加载代码文件”中
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucumber/runtime/support_code.rb:142:在“加载文件”中
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucucumber/runtime/support_code.rb:84:在“加载文件中的块”中
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucumber/runtime/support_code.rb:83:在'each'中
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucumber/runtime/support_code.rb:83:在“加载文件”中
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucucumber/runtime.rb:253:在“加载步骤定义”中
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucucumber/runtime.rb:61:in'run!'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/lib/cucucumber/cli/main.rb:32:in'execute!'
/var/lib/jenkins/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/cucumber-2.4.0/bin/cucucumber:8:in`'
/var/lib/jenkins/.rbenv/versions/2.4.0/bin/cucumber:22:in'load'
/var/lib/jenkins/.rbenv/versions/2.4.0/bin/cucumber:22:in`'

跟踪代码中此错误的确切来源,然后

begin
    <driver execution code>
rescue Net::ReadTimeout
    @driver.quit
end
开始
救援网::读取超时
@司机,退出
结束
这将捕获错误并根据需要关闭会话

我所做的是编写一个单独的方法来处理错误

def rescue_exceptions
    begin
        yield
    rescue Selenium::WebDriver::Error::NoSuchElementError,
            Selenium::WebDriver::Error::UnknownError,
            Selenium::WebDriver::Error::StaleElementReferenceError,
            Selenium::WebDriver::Error::ElementNotInteractableError
        <Handle Errors Here>
    end
end
def rescue_异常
开始
产量
rescue Selenium::WebDriver::Error::NoSuchElementError,
Selenium::WebDriver::错误::未知错误,
Selenium::WebDriver::Error::StaleElementReferenceError,
Selenium::WebDriver::Error::ElementNotInteractiableError
结束
结束
然后,可以将此方法包装在可能导致问题的其他代码周围

def SignIn
    rescue_exceptions {
        <Perform Actions Here>
    }
end
def签名
营救例外{
}
结束

确保只有在应用程序正确启动时才启动selenium会话。我们遇到了同样的问题。在安装了所有依赖项的ubuntu 14.04上,可以通过xvfb在终端上启动chrome。但当我通过ruby启动它时(在我们的例子中是selenium),它只是在这个问题中使用相同的堆栈跟踪超时。到目前为止还没有找到解决办法