2012-06-11 3 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 для нашей сети, и у меня также есть системная переменная. Я действительно не знаю, почему Ватир будет работать на Ruby, но не на JRuby.

+0

Как насчет: хром или: firefox? –

+0

Что такое возвращаемое значение '' 'Selenium :: WebDriver :: Platform.interfaces'''? – jarib

+0

Я понял, что случилось. Я установил 32-битный и 64-разрядный JDK, потому что у меня есть приложения, которые должны использовать оба. Тем не менее, я установил JAVA_HOME в 32-разрядный, а не 64-й. После установки его в 64-разрядный JDK я теперь могу запускать браузеры с использованием жемчуга watir-webdriver. – redstapler

ответ

6

У меня была аналогичная проблема - selenium-webdriver не открывая браузер при использовании JRuby и Java 6, однако он работал с Java 7.

Я обнаружил, что Java 6, кажется, есть некоторые проблемы с IPv6, и он не мог» t найти свободный порт на интерфейсах IPv6.

Решение состоит в том, чтобы добавить -Djava.net.preferIPv4Stack=true в JAVA_OPTS, в котором Java предпочитает IPv4 по IPv6, когда это возможно.

+0

Спасибо tomgi! Я решил свою проблему, понизив до JRuby 1.6 и моего jdk до 1.6. Кажется, все хорошо сейчас :) – redstapler