2017-11-05 11 views
0

私はコードを新規作成しました。私は観察機能を持つSikuliを使ってみる。スクリプトを使用するときには、そのことを1回実行してから、もう一度実行しません。Sikuli 1.1の動作を確認してください

while(1): 
def Handler(event): 
    stopObserver 
    click(image) 
    event.repeat(1)  
    pass 

    while(1): 
     onAppear("image", Handler) 
     observe(FOREVER) 

スクリプトにはどのような問題がありますか?なぜスクリプトは画像を1回だけクリックしますか?画像が2度目に現れた場合は何も起こりません。

+0

正確に何を達成したいのかを説明してください。それに基づいて、正しい方法を指摘するのが簡単になります。 –

+0

私は観測機能を理解したい。私は[Sikuli Homepage](http://doc.sikuli.org/region.html?highlight=observ#observingvisualeventsinaregion)から情報を読みました。私は画像を待つためのテストを書いた(例えば電卓が表示されてから "1" "+" "1" "="をクリックする)。 – foobar

+0

今日、スクリプトは再起動(?)後に機能します。 'event.repeat(1)'を使わないと、スクリプトは動かない。 sikuli pseudo sciptはそれを使わない。 – foobar

答えて

0

Sikuliのオブザーバは、時々少し混乱することがあります。

一般に、onXXXXX(observe-eventsまたはjust events)を使用して、1つまたは複数のイベントをRegionに登録します。その後、オブザーバーを開始し、必要に応じて後で再び停止することによって、Regionで観測を開始します。

しかし、画面の他の領域とのやりとりを続けている間にオブザーバをバックグラウンドで実行する必要がない場合は、ほとんどの場合、タイムドwaitを使用する方が簡単です。スクリプトの流れが継続する前に待機のみwaitTime持続します。ここ

wait(pattern, waitTime) 

:あなたはこのようにそれを行うことができます。

+0

ありがとうございました。 – foobar

+0

リージョンのオブザーバはどのように起動できますか?私はコードの最後に 'observe(FOREVER)'を1回使用します。私はこれが前に定義されたすべての定義された 'onAppear(xxx)'を開始すると思った。ハンドラで 'event.repaet(1)'を使う必要がありますか? – foobar

+0

別のコードスニペットを試してみました。その間、私のコードは 'event.repeat(1)'なしで動作します。 'while(1) 'で始まる2番目のブロックを移動して、' observe(FOREVER) 'を開始しました。 – foobar

関連する問題