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 で使用可能な 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)'

vnc ベースのアプリケーションのパフォーマンス テストに watigrid と sikuli を使用することに関心があります。

4

2 に答える 2

3

したがって、コードでは、.screen の呼び出しは「グリッド」オブジェクトには存在しません。実際には、私が推測している sikuli パッケージの一部である Screen クラスに属するメソッドです。

例からわかるように、Screen クラス オブジェクトはローカルでインスタンス化されます。必要なのは、このオブジェクトをリモートでインスタンス化することです。

Watirgrid は、リモートの watir[-webdriver] オブジェクトを DRb 経由で公開するだけです。Sikuli の知識はありません。例では、watir-webdriver を使用してブラウザーのインスタンスを起動し、フロント ページに移動しているように見えます。それ以降は、Sikuli がほとんどの作業を行っていると思います。

あなたが本当に必要としているのは Sikuligrid です =) 尋ねられたのはあなただけなので、あなたがやろうとしていることを達成するためのより良い方法があるかもしれないので、モンキー パッチ ワティルグリッドに行くつもりはありません。

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

local.rb

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

この時点で、watirgrid に関する私の焦点は、分散グリッド ネットワーク上で watir[-webdriver] をテストできるようにすることです。ただし、Web アプリ以外の「他の」ものを駆動する際の webdriver などの有用性は認めます。これは、Sikuli やネイティブドライバーhttp://code.google.com/p/nativedriver/などのツールが非常に魅力的に見える場所です。今のところ、私の焦点は watirgrid を防弾にすることであり、おそらくリストの次は、phantomjs を使用したヘッドレス ブラウザの自動化です...

于 2011-06-17T22:49:48.883 に答える
0

Tim が投稿したように、誰かが「Sikuli Grid」を構築するまでは、Tim の提案に従って独自のグリッドを作成するのが最善の方法です。

もう 1 つのより単純でありながら、別の方法を実行するための開発作業が、私のブログ投稿で紹介されています。ただし、これはまだ実装および証明されていない理論的アプローチです。

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

于 2012-01-07T02:00:25.433 に答える