3

ボタンが表示されるのを待っている Web ページがあり、表示されたらクリックしたいと思います。ボタンはタイマー式で、表示されるまでに 1 時間ほどかかる場合があります。また、ボタンが表示されるまでに一定時間以上かかる場合は、マウスを動かしたいと思います (そうしないと、Web サイトから自動的にログアウトされます)。

そこで、ボタンが表示されるのを待つために、次の Sikuli スクリプトを考案しました。

button = "button.png"

while(1):
    if exists(button):
        print("found it")
        click(button)
        break
    else:
        print("wait longer")
        wait(button,30*60)
        # do a regular task

print "all done!"

上記は機能していないようです。ボタンが画面上にある場合、スクリプトはそれを見つけます...ただし、待機する必要がある場合は、FindFailed 例外ですぐにタイムアウトします (click()ボタンが画面上に存在しなくても)。ハンドラーを書くことを検討しましたが、やり過ぎのようです。

このような視覚的なイベントを長時間待つ最善の方法は何ですか?

4

4 に答える 4

8

あなたのための他のいくつかの考え...

 while(1):
 wait(Button, 30*60) # This will spinlock for 30 minutes for the button to appear
 if exists(Button):
     hover(Button) # Debug statement allowing user to see what Sikuli has matched to
     click (Button)
 else:
     mouseMove(Location(50,100))
     mouseMove(Location(50,200))

リンク:

于 2012-07-26T18:33:36.640 に答える
5

おそらく、Sikuli はあなたのボタンのように見えるものを認識し、それをクリックしようとします。IDE でボタン パターンを右クリックすると、認識の許容レベルを微調整できます。ボタンの周りの画像を正確に切り取って、より正確になるように値を増やしてください。

このチュートリアル
http://doc.sikuli.org/tutorials/surveillance/surveillance.html
を読み、http://doc.sikuli.org/region が表示されたときにボタンを管理するイベント ハンドラーを設定することをお勧めします
。 html#Region.onAppear
http://doc.sikuli.org/region.html#observingvisualeventsinaregion
書くコードはそれほど多くありません。

Sikuli のブログ ( http://sikuli.org/blog/2011/08/15/sikuli-plays-angry-birds-on-google-games/ ) で、完全なソース コードを含む優れた例を入手できます。

ハンドラーをセットアップして、一緒に行くことができると思います

観察(永遠に)

于 2012-07-26T11:19:59.077 に答える
1

画像を待っている間に sikuli に処理をさせたい場合は、onAppear(pic, function) メソッドと observe(FOREVER, true) メソッドを使用します。

event = Sikuli.event

def function(event):
    click(yourButton.png)

onAppear(picYourWaitingFor.png, function)
observe(FOREVER, true)

基本的にこれが行うことは、onAppear が picYourWaitingFor.png の画面を継続的にスキャンすることです。sikuli は単語の後に実行を続けるため、作業中にスキャンします。上記の写真が表示されると、onAppear の 2 番目のパラメーターとして指定した関数にジャンプします。

于 2015-03-04T19:19:08.573 に答える