我想知道watirgrid / gridinit是否可以和Sikuli一起使用。 http://www.sikuli.org
按照
中的示例,我已经成功地将Sikuli与watir-webdriver和黄瓜整合在一起这一切都是从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的应用程序的性能测试。
答案 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/