2011-06-17 31 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防彈,並且可能接下來是幻燈片的無頭瀏覽器自動化......

相關問題