0

我想知道 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 的应用程序的性能。

4

2 回答 2

3

因此,在您的代码中,“网格”对象上不存在调用 .screen ,它实际上是属于 Screen 类的方法,它是我猜测的 sikuli 包的一部分。

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

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

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

使用 DRb,您甚至可以做一些非常简单的事情,如下所示:

远程.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

本地.rb

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

在这一点上,我对 watirgrid 的关注是在分布式网格网络上启用 watir[-webdriver] 的测试。但是,我确实承认 webdriver 之类的东西在驱动“其他”而不是 web 应用程序方面的有用性。这就是像 Sikuli 甚至 nativedriver http://code.google.com/p/nativedriver/这样的工具看起来非常有吸引力的地方。现在虽然我的重点是让 watirgrid 防弹,但可能下一个列表是使用 phantomjs 的无头浏览器自动化......

于 2011-06-17T22:49:48.883 回答
0

正如 Tim 所发布的,在有人建立“Sikuli Grid”之前,您最好的选择是按照 Tim 的建议创建自己的此类 Grid。

我的博客文章中介绍了另一个更简单但仍有开发工作要做的替代方法。这是一种尚未实施和证明的理论方法。

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

于 2012-01-07T02:00:25.433 回答