watirgrid и sikuli - могут ли они играть вместе? - PullRequest
0 голосов
/ 17 июня 2011

Мне было интересно, можно ли использовать watirgrid / gridinit в сочетании с Sikuli.http://www.sikuli.org

Я добился определенного успеха при интеграции Sikuli с watir-webdriver и cucumber, следуя примерам в

http://www.software -testing.com.au / blog/ 2010/08/16 / automating-flash-ajax-popups-and-more-using-ruby-watir-and-sikuli

Все это делается из Jruby.

Следующим шагом для меня было посмотреть, смогу ли я использовать watirgrid для отправки команд sikuli, но пока я не добился успеха.

Я последовал примеру в http://altentee.com/blogs/2010/watirgrid-support-for-watir-webdriver/


что я ввел:

irb
require 'watirgrid'
require 'watir-webdriver'
require 'java'

java_import "org.sikuli.script.SikuliScript"
java_import "org.sikuli.script.Region"
java_import "org.sikuli.script.Screen"


# setup a controller on port 12351 for your new grid
controller = Controller.new(
        :ring_server_port => 12351,
  :loglevel => Logger::ERROR)
controller.start

# add a provider to your grid
# :browser_type => 'webdriver' if using webdriver or
# :browser_type => 'ie' if using watir...
provider = Provider.new(
        :ring_server_port => 12351,
  :loglevel => Logger::ERROR, :browser_type => 'webdriver')
provider.start

# connect to the grid and take all providers from it (this time only one)
grid = Watir::Grid.new(:ring_server_port => 12351, :ring_server_host => '192.168.0.107')

screen=Screen.new

grid.start(:take_all => true)

+++++++++++++ всехорошо до этого момента.++++++++++++++

+++++++++++++ - вот где колеса отрываются ++++++++++++++

+++++++++++++, как сделать метод экрана доступным для watirgrid?++++++++++++++

irb(main):029:0* grid.screen.click("StartUpAdobe\/f.png",0)
NoMethodError: undefined method `screen' for #<Watir::Grid:0x1a0283e>
        from (irb):29:in `evaluate'
        from org/jruby/RubyKernel.java:1088:in `eval'
        from C:/jruby-1.6.2/lib/ruby/1.8/irb.rb:158:in `eval_input'
        from C:/jruby-1.6.2/lib/ruby/1.8/irb.rb:271:in `signal_status'
        from C:/jruby-1.6.2/lib/ruby/1.8/irb.rb:155:in `eval_input'
        from org/jruby/RubyKernel.java:1419:in `loop'
        from org/jruby/RubyKernel.java:1191:in `catch'
        from C:/jruby-1.6.2/lib/ruby/1.8/irb.rb:154:in `eval_input'
        from C:/jruby-1.6.2/lib/ruby/1.8/irb.rb:71:in `start'
        from org/jruby/RubyKernel.java:1191:in `catch'
        from C:/jruby-1.6.2/lib/ruby/1.8/irb.rb:70:in `start'
        from C:\jruby-1.6.2\bin\irb:13:in `(root)'

Мы заинтересованы в использовании watigrid и sikuli для тестирования производительности приложений на основе vnc.

Ответы [ 2 ]

3 голосов
/ 18 июня 2011

Так что в вашем коде вызов .screen не существует для объекта 'grid', на самом деле это метод, принадлежащий классу Screen, который является частью пакетов sikuli, которые я предполагаю.

Как видно из примеров, объект класса Screen создается локально. Вам нужно, чтобы этот объект создавался удаленно.

Watirgrid просто предоставляет удаленные объекты watir [-webdriver] через DRb. Он не знает о Сикули. Похоже, что в примерах вы просто используете watir-webdriver для запуска экземпляра браузера и перехода на первую страницу. С тех пор я предполагаю, что Sikuli выполняет большую часть работы.

Что вам действительно нужно, так это Sikuligrid =) Так как вы - единственный человек, которого спрашивают, я не собираюсь идти на патчи с обезьянами Watirgrid, так как может быть лучший способ достичь того, что вы пытаетесь сделать.

Используя DRb, вы даже можете сделать что-то очень простое, как это:

remote.rb

require 'drb' 
require 'java'
java_import "org.sikuli.script.SikuliScript"
java_import "org.sikuli.script.Region"
java_import "org.sikuli.script.Screen"
DRb.start_service("druby://127.0.0.1:61676", Screen.new) 
DRb.thread.join

local.rb

require 'drb'
screen = DRbObject.new_with_uri("druby://127.0.0.1:61676")
screen.click("StartUpAdobe\/f.png",0)

На данный момент моя задача с watirgrid - включить тестирование watir [-webdriver] в распределенной сети. Однако я признаю полезность таких вещей, как веб-драйвер, для управления чем-то «иным», чем веб-приложением. Именно здесь такие инструменты, как Sikuli и даже nativedriver http://code.google.com/p/nativedriver/ выглядят очень привлекательно. Прямо сейчас, хотя мое внимание сосредоточено на создании пуленепробиваемой системы watirgrid, и, вероятно, следующей в списке является автоматизация браузера без помощи phantomjs ...

0 голосов
/ 07 января 2012

Как писал Тим, пока кто-то не построит "Сикули Серику", ваш лучший вариант - создать свою собственную Сетка, следуя советам Тима.

Еще одна более простая, но все еще требующая разработки альтернатива представлена ​​в моем блоге. Это теоретический подход, который еще должен быть реализован и проверен.

http://autumnator.wordpress.com/2011/12/22/autoit-sikuli-and-other-tools-with-selenium-grid/

...