5

アプリケーションに新しいウィンドウを開く時間を与えるためwaituntilpassesに inを使用しようとしています。pywinautoウィンドウの詳細を特定するために SWAPY を使用しました。

テストのために、サブウィンドウを手動で開いたので、WaitUntilPassesこれはすぐに表示されるはずですが、表示されません。

find_windows以下のように、の出力を見つけて印刷できるため、構文は問題ないように見えます。

xx = pywinauto.findwindows.find_windows(
    title=u'Choose template', class_name='#32770')[0]
print (xx)

これにより、789646 の応答が得られます。

ただし、私の WaitUntilPasses コマンドでは:

pywinauto.timings.WaitUntilPasses(
    20, 0.5, 
    (pywinauto.findwindows.find_windows(
        title=u'Choose template', class_name='#32770')[0]
    )
)

いつもタイムアウトします。構文に問題が見られず、考えられるすべての順列を試しました。どんなヒントでも大歓迎です。

4

1 に答える 1

5

pywinauto.timings.WaitUntilPasses3番目のパラメーターで関数を待機しますが、関数実行の値は待機しません(あなたの場合)。

修正 - ラムダ関数でチェックを変換します。

pywinauto.timings.WaitUntilPasses(20, 0.5, lambda: pywinauto.findwindows.find_windows(title=u'Choose template', class_name='#32770')[0])

ただし、チェックを別の関数に入れることをお勧めします。

def check():
    return pywinauto.findwindows.find_windows(title=u'Choose template', class_name='#32770')[0]

pywinauto.timings.WaitUntilPasses(20, 0.5, check) #Important: 'check' without brackets
于 2013-10-07T14:09:20.493 に答える