rautomation — в RubyMine с ошибкой получения JRuby

#cucumber #rautomation

#cucumber #rautomation

Вопрос:

Я искал автоматизацию приложений Windows, и меня попросили изучить rautomation, который я только начал использовать.

Теперь, после просмотра документации на github и нескольких блогах Jarmo, я публикую здесь очень простую проблему, и я уверен, что я делаю что-то очень простое неправильно.

Вот мой код —

 >> require "rubygems"
=> true
>> require "rautomation"
=> true
>> @window = RAutomation::Window.new :title => "System Volume (C:)"
RuntimeError: unsupported platform for RAutomation: java
    from C:/jruby-1.5.6/lib/ruby/gems/1.8/gems/rautomation-0.6.3/lib/rautomation/adapter/helper.rb:16:in `default_adapter'
    from C:/jruby-1.5.6/lib/ruby/gems/1.8/gems/rautomation-0.6.3/lib/rautomation/window.rb:65:in `initialize'
    from (irb):10:in `new'
    from (irb):10
  

Итак, вопрос в том, что я делаю не так?
Здесь я пытаюсь разобраться с проводником Windows.

Готово — сделано. Проблема заключается в использовании Jruby. Если я использую (обычный) ruby с rubymine, у меня не возникает никаких проблем. Stackoverflow не позволит мне закрыть мой вопрос, пока у меня не будет 100 репутации.

Комментарии:

1. Готово — сделано. Проблема заключается в использовании Jruby. Если я использую (обычный) ruby с rubymine, у меня не возникает никаких проблем. Stackoverflow не позволит мне закрыть мой вопрос, пока у меня не будет 100 репутации.

2. Вам не нужно закрывать вопрос. Отправьте свой комментарий в качестве ответа и примите его.

3. Да, это то, что я имел в виду.. Это не позволит мне ответить на мой собственный вопрос, пока у меня не будет 100 репутации… Итак, я добавил его в качестве комментария

Ответ №1:

Это происходит потому, что RAutomation определял совместимость с RUBY_PLATFORM. В следующей версии вместо этого будет использоваться переменная среды ОС: https://github.com/jarmo/RAutomation/commit/dd825b04aab6d90cfedf385a620095c17da92644

Но вы также можете использовать его с JRuby (хотя он не протестирован, но он должен работать) прямо сейчас, указав сам адаптер, чтобы метод #default_adapter не выполнялся. Вы можете сделать это двумя способами:

1) Укажите адаптер для метода Window.new:

 RAutomation::Window.new(:title => //, :adapter => :win_ffi)
  

2) Укажите адаптер в переменной среды:

 set RAUTOMATION_ADAPTER=win_ffi