【问题标题】:watirgrid and sikuli - can they play together?watirgrid 和 sikuli - 他们可以一起玩吗?
【发布时间】:2012-01-07 10:00:25
【问题描述】:

我想知道 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 可用的 screen 方法? ++++++++++++++++

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

【问题讨论】:

  • 为了清楚起见,我打算编辑此内容,但我现在意识到我无法真正理解您在帖子细节中想说的内容。我可以建议您重新格式化以更清晰地显示您经历的过程吗?它需要很容易遵循你的思路。这将防止投反对票,并让您获得更多潜在回答者的关注。

标签: jruby watir watir-webdriver sikuli


【解决方案1】:

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

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

Watirgrid 只是通过 DRb 公开远程 watir[-webdriver] 对象。它对Sikuli一无所知。看起来在示例中,您只是使用 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] 测试。然而,我确实承认像 webdriver 这样的东西在驱动“其他”而不是 web 应用程序方面的有用性。这就是像 Sikuli 甚至 nativedriver http://code.google.com/p/nativedriver/ 这样的工具看起来非常有吸引力的地方。虽然现在我的重点是让 watirgrid 防弹,但可能下一个列表是使用 phantomjs 实现无头浏览器自动化......

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      • 2012-02-06
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 2020-06-17
      • 1970-01-01
      相关资源
      最近更新 更多