【问题标题】:JRuby: Watir is hanging when launching browserJRuby:启动浏览器时 Watir 挂起
【发布时间】:2012-08-08 21:13:51
【问题描述】:

我有 Windows 7 Enterprise,我正在尝试运行 JRuby。我已经为 Ruby (1.9.3)、Java (jdk - 1.6.7) 和 JRuby (1.7preview) 设置了我的环境变量。我有一个网络驱动器,但我创建了一个似乎可以正常工作的 HOME 系统变量,因为我可以成功下载 Ruby 和 JRuby 的 gem,并将它们保存到我的本地驱动器。

当我尝试启动浏览器(即,firefox、chrome)时,它似乎为 JRuby 挂起,但不是 Ruby。这是 JRuby 在尝试执行 10 分钟后的跟踪:

irb(main):003:0> require 'rubygems'
=> false
irb(main):004:0> require 'watir-webdriver'
=> true
irb(main):005:0> b = Watir::Browser.new :ie
IRB::Abort: abort then interrupt! *<--Note I killed the process after 10 minutes*
    from c:/Ruby/jruby-bin-1.7.0.preview1/jruby-1.7.0.preview1/lib/ruby/gems
    /shared/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/common 
    /port_prober.rb:24:in `free?'       
    from c:/Ruby/jruby-bin-1.7.0.preview1/jruby-1.7.0.preview1/lib/ruby/gems
    /shared/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/common  
    /port_prober.rb:5:in `above'        
    from c:/Ruby/jruby-bin-1.7.0.preview1/jruby-1.7.0.preview1/lib/ruby/gems
    /shared/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/ie/bridge.rb:17:in
   `initialize'
    from org/jruby/RubyHash.java:1429:in `delete'
    from c:/Ruby/jruby-bin-1.7.0.preview1/jruby-1.7.0.preview1/lib/ruby/gems
    /shared/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/ie/bridge.rb:17:in
    `initialize'
    from c:/Ruby/jruby-bin-1.7.0.preview1/jruby-1.7.0.preview1/lib/ruby/gems
    /shared/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/common/driver.rb:3
    5:in `for'
    from c:/Ruby/jruby-bin-1.7.0.preview1/jruby-1.7.0.preview1/lib/ruby/gems
    /shared/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver.rb:65:in `for'
    from c:/Ruby/jruby-bin-1.7.0.preview1/jruby-1.7.0.preview1/lib/ruby/gems
    /shared/gems/watir-webdriver-0.6.1/lib/watir-webdriver/browser.rb:35:in   
    `initialize'
    from (irb):5:in `evaluate'
    from org/jruby/RubyKernel.java:1037:in `eval'
    from org/jruby/RubyKernel.java:1353:in `loop'
    from org/jruby/RubyKernel.java:1146:in `catch'
    from org/jruby/RubyKernel.java:1146:in `catch'
    from c:\Ruby\jruby-bin-1.7.0.preview1\jruby-1.7.0.preview1\bin\irb:13:in
    `(root)'

JRuby 似乎挂起,因为它正在寻找一个开放的端口。我们必须为我们的网络使用 HTTP 代理,我也为此设置了一个系统变量。我真的不知道为什么 Watir 会为 Ruby 而不是 JRuby 工作。

【问题讨论】:

  • :chrome 或 :firefox 怎么样?
  • Selenium::WebDriver::Platform.interfaces的返回值是多少?
  • 我知道出了什么问题。我已经安装了 32 位和 64 位 JDK,因为我有需要同时使用这两者的应用程序。但是,我将 JAVA_HOME 设置为 32 位,而不是 64。将其设置为 64 位 JDK 后,我现在可以使用 watir-webdriver gem 启动浏览器。
  • 感谢您的回复!它帮助我思考了我的问题

标签: java ruby jruby watir


【解决方案1】:

我遇到了类似的问题 - selenium-webdriver 在使用 JRuby 和 Java 6 时没有打开浏览器,但它在 Java 7 中有效。

我发现 Java 6 似乎对 IPv6 有一些问题,它在 IPv6 接口上找不到空闲端口。

解决方案是在JAVA_OPTS 中添加-Djava.net.preferIPv4Stack=true,告诉Java 尽可能选择IPv4 而不是IPv6。

【讨论】:

  • 谢谢汤姆吉!我通过降级到 JRuby 1.6 和我的 jdk 到 1.6 解决了我的问题。现在一切似乎都很好:)
猜你喜欢
  • 1970-01-01
  • 2012-12-20
  • 1970-01-01
  • 2017-02-19
  • 1970-01-01
  • 2013-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多