首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接拒绝使用幻影的Watir网络驱动程序

连接拒绝使用幻影的Watir网络驱动程序
EN

Stack Overflow用户
提问于 2015-12-07 14:07:47
回答 1查看 256关注 0票数 0

我对运行在线程中的Watir有一个问题。基本上看起来是这样的:我正在创建线程(假设有三个线程)。然后我正在创建新的浏览器,访问网页并试图关闭此浏览器。所有事情都正常工作了2-3个小时,然后我得到了这个错误(browser.close导致了这个错误):

代码语言:javascript
复制
Errno::ECONNREFUSED: Connection refused - Connection refused
       initialize at org/jruby/ext/socket/RubyTCPSocket.java:124
             open at org/jruby/RubyIO.java:1123
 block in connect at /home/ubuntu/.rvm/rubies/jruby-9.0.4.0/lib/ruby/stdlib/net/http.rb:883
          timeout at org/jruby/ext/timeout/Timeout.java:128
          connect at /home/ubuntu/.rvm/rubies/jruby-9.0.4.0/lib/ruby/stdlib/net/http.rb:882
         do_start at /home/ubuntu/.rvm/rubies/jruby-9.0.4.0/lib/ruby/stdlib/net/http.rb:867
            start at /home/ubuntu/.rvm/rubies/jruby-9.0.4.0/lib/ruby/stdlib/net/http.rb:856
            start at /home/ubuntu/.rvm/rubies/jruby-9.0.4.0/lib/ruby/stdlib/net/http.rb:583
             stop at /home/ubuntu/.rvm/gems/jruby-9.0.4.0/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/phantomjs/service.rb:75
             quit at /home/ubuntu/.rvm/gems/jruby-9.0.4.0/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/phantomjs/bridge.rb:73
             quit at /home/ubuntu/.rvm/gems/jruby-9.0.4.0/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/common/driver.rb:171
            close at /home/ubuntu/.rvm/gems/jruby-9.0.4.0/gems/watir-webdriver-0.9.1/lib/watir-webdriver/browser.rb:136

这是密码:

代码语言:javascript
复制
THREAD_COUNT.times.map {
  Thread.new(links) do |links|
    while link = mutex.synchronize { links.pop }
      counter = 0
      sleep(rand 1..50)
      browser = Watir::Browser.new :phantomjs, :args => %w(--ssl-protocol=tlsv1 --ignore-ssl-errors=yes)
      begin
       result = function(browser)
      rescue
       counter += 1
       retry if counter > 2
      end
      browser.close
    end
  end
}.each(&:join)

我在ubuntu和JRuby9.0.4.0上运行它,就像这里建议的那样,我添加了睡眠Opening several threads with watir-webdriver results in 'Connection refused' error,但是它不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-31 09:57:38

正如您所看到的,我在while-循环中创建了新的浏览器实例。有时它无法及时关闭该浏览器或发生其他与pid相关的故障。最好是创建固定数量的浏览器(例如THREAD_COUNT时间),并在可用时重用它。因此,在THREAD_COUNT.times.map之后创建浏览器将为每个线程提供一个浏览器实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34135545

复制
相关文章

相似问题

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