watirgrid和sikuli - 他们可以一起玩吗?

时间:2011-06-17 12:51:18

标签: jruby watir watir-webdriver sikuli

我想知道watirgrid / gridinit是否可以和Sikuli一起使用。 http://www.sikuli.org

按照

中的示例,我已经成功地将Sikuli与watir-webdriver和黄瓜整合在一起

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)

++++++++++++++++++++++++++++ ++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++

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 个答案:

答案 0 :(得分:3)

所以在你的代码中,调用.screen在'grid'对象上不存在,它实际上是一个属于Screen类的方法,它是我猜测的sikuli包的一部分。

从示例中可以看出,Screen类对象是在本地实例化的。你想要的是远程实例化这个对象。

Watirgrid只是通过DRb暴露远程watir [-webdriver]对象。它不了解Sikuli。看起来在示例中,您只是使用watir-webdriver来启动浏览器实例并导航到首页。从那时起,我猜测Sikuli完成了大部分工作。

你真正需要的是一个Sikuligrid =)因为你是唯一一个被问到我不会去猴子补丁Watirgrid的人,因为可能有更好的方法来实现你想要做的事情。 / p>

使用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]的测试。然而,我确实承认像webdriver这样的东西在驱动某些“其他”而不是网络应用程序时的用处。这就是Sikuli甚至nativedriver http://code.google.com/p/nativedriver/等工具看起来非常有吸引力的地方。现在虽然我的重点是制作watirgrid防弹,但可能在下面列出的是带有幻影的无头浏览器自动化......

答案 1 :(得分:0)

正如蒂姆所说,直到有人建立了“Sikuli网格”,你最好的选择是根据蒂姆的建议创建你自己的网格。

另一个更简单但仍有开发工作要做的选择在我的博客文章中提供。这是一种尚未实施和证明的理论方法。

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