2012-06-11 53 views
4

我有Windows 7 Enterprise,我試圖運行JRuby。我爲Ruby(1.9.3),Java(jdk - 1.6.7)和JRuby(1.7preview)設置了我的環境變量。我有一個網絡驅動器,但我創建了一個HOME系統變量,因爲我可以成功下載Ruby & JRuby的寶石,並將它們保存到我的本地驅動器,因此似乎可以正常工作。JRuby:Watir在啓動瀏覽器時掛起

當我嘗試啓動瀏覽器(例如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工作。

+0

那麼:chrome或者:firefox? –

+0

什麼是Selenium :: WebDriver :: Platform.interfaces'''的返回值? – jarib

+0

我想通了什麼是錯的。我已經安裝了32位和64位JDK,因爲我的應用程序需要同時使用兩者。但是,我將JAVA_HOME設置爲32位而不是64.將它設置爲64位JDK後,我現在可以使用watir-webdriver gem啓動瀏覽器。 – redstapler

回答

6

我有類似的問題 - 使用JRuby和Java 6時selenium-webdriver不打開瀏覽器,但它與Java的工作7.

我發現Java 6中似乎有一些問題,IPv6和它couldn」在IPv6接口上找到自由端口。

解決方案是將-Djava.net.preferIPv4Stack=true添加到JAVA_OPTS告訴Java如果可能的話更喜歡IPv4 over IPv6。

+0

謝謝tomgi!我通過降級到JRuby 1.6和我的JDK 1.6來解決了我的問題。現在一切似乎都很好:) – redstapler