1

Webページにsikuli skriptを適用して、ページがロードされたときに特定のボタンが表示されるのを待つようにします。ボタンがWebページに表示されるまで特定の時間待機しない場合はクリックします..私は次のスクリプトを実行しました.. 2〜3回のループでは問題なく動作しますが、その後プログラムが停止し、sikuliウィンドウが表示されます..これが私のコードです.

while exists("img1.png"):

    click("img1.png")
    wait("img2",30*60)
    click("img2.png")
    click("window close button.png") // here it closes the 2nd popup tab after clicking on img2 then it return to its page

img1 ボタンが再び表示されるのを待つ場所.. so wait("img1.png",30*60) //このスクリプトは 3 ~ 4 回の反復で正常に動作しますが、その後停止し、sikuli ウィンドウがエラーなしで表示されます。ご協力いただきありがとうございます

4

3 に答える 3

2

エラー メッセージがなければ、スクリプトが機能しない理由を判断するのは困難です。しかし、私の最善の推測は、while exists("img1.png")img1.png が見つからないため、false が返されるということです。ページがまだリロードされていないため、Sikuli が img1.png を見つけられない可能性があります。ステートメントwait(1)の最後にa を追加してみてください。while

または、 Regionクラスの メソッドonAppearobserveメソッドを使用してみてください: Region.observe()

于 2012-12-16T17:56:55.977 に答える
0

すでに問題を解決したかどうかはわかりません。

あなたのような効果は常にタイミングの問題です: マウス操作によってトリガーされる何かが速すぎたり遅すぎたりするため、次の Sikuli Script ステートメントは、ワークフローが画面上に期待するものを「認識」しません。

上記の eostrows で既に述べたように、スクリプトがエラー メッセージなしでサイレントに終了した場合、"while exists()" は NotFound 条件を与え、ループを停止しました。 window close button.png")。これは、ループ内の他のすべてのアクションが機能するか、FindFailed 例外でスクリプトを終了するためです。

この方法でワークフローをより堅牢にすることができます。

while exists("img1.png", 10): # wait max 10 secs
    click("img1.png")
    click(wait("img2.png",30*60)) # this saves one search for same image
    click("window close button.png")
else:
    print "img1 not seen after window close"
于 2012-12-20T08:57:16.540 に答える
0

待ちます("img2",30*60)

これは、wait("img2.png",30*60) と同じではないことに注意してください。

また、デバッグのために、find ("img2.png") を試してください。これは、画面に表示されたときに img2.png の上にマウスを置きます。img2.png が表示された後にマウスがホバーしない場合は、同様の() コマンドを使用して検索の精度を下げることができます。

于 2012-12-16T18:05:47.533 に答える