2011-06-17 183 views
0

我想知道watirgrid/gridinit是否可以和Sikuli一起使用。 http://www.sikuli.orgwatirgrid和sikuli - 他们可以一起玩吗?

我已经有一些成功整合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) 

+++++++++++++一切都很好了这一点。 ++++++++++++++

+++++++++++++这是那里的车轮脱落++++++++++++ ++

+++++++++++++如何获取可供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的应用。

+0

我要编辑此为清楚起见,但我现在意识到我真的不能跟着你想在您的文章的细节说什么。我能否建议您重新格式化以显示您已经经历了更清晰的过程?它需要很容易遵循你的思路。这样可以防止降低投票并让您更加关注可能的答复者。 – kinofrost 2011-06-17 15:26:35

回答

3

因此,在你的代码,调用。屏幕的“网格”对象不存在,它实际上是属于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,甚至本土驱动器http://code.google.com/p/nativedriver/等工具看起来非常有吸引力的地方。现在虽然我的重点是制作watirgrid防弹,并且可能接下来是幻灯片的无头浏览器自动化......

相关问题