0

私は生物学者であり、pywinauto を初めて使用します。pywinauto を使用して HYPHY アプリケーションで入力ファイルを開くコードを作成しました。コマンド ラインでコードを 1 行ずつ実行すると正常に動作しますが、コードをバッチ ファイルとして実行すると、以下のエラー。

Traceback (most recent call last):
File "C:\Users\Masyh\Desktop\autowin_test.py", line 8, in <module>
w_handle = pywinauto.findwindows.find_windows(title=u' Please select a batch file to run:',   class_name='#32770')[0]
IndexError: list index out of range

コードは次のとおりです。

import pywinauto

pwa_app = pywinauto.application.Application()
w_handle = pywinauto.findwindows.find_windows(title=u'HYPHY Console', class_name='HYPHY')[0]
window = pwa_app.window_(handle=w_handle)
window.SetFocus()
window.MenuItem(u'&File->&Open->Open &Batch File\tCtrl+O').Click()
w_handle = pywinauto.findwindows.find_windows(title=u' Please select a batch file to run:',        class_name='#32770')[0]
window = pwa_app.window_(handle=w_handle)
window.SetFocus()

ctrl = window['Edit']
ctrl.Click()
ctrl.TypeKeys('brown.nuc')
ctrl=window['&open']
ctrl.Click()

問題は、入力を取得するウィンドウ (#'バッチ ファイル メニューを選択してください') が最初に開いておらず、コードの最初の部分が開いていることですが、Python は最初からそれを探して見つけられないことだと思います. これを解決する方法についての提案を本当に感謝しています。

4

1 に答える 1

1

確認するとウィンドウが存在しないようです。ウィンドウが開くまでしばらくお待ちください。次の構築を試してください:

a_check = lambda: pywinauto.findwindows.find_windows(title=u' Please select a batch file to run:',        class_name='#32770')[0]
try:
    w_handle = pywinauto.timings.WaitUntilPasses(timeout=10, retry_interval=1, a_check)
except:
    print('Something went wrong')

また、ウィンドウに余分な属性/状態があるために問題が発生する可能性があります。たとえば、目に見えない。そのような場合を処理するには、find_windows の許可された引数を使用します。ここでは、デフォルト値の引数リストを示します。

pywinauto.findwindows.find_windows(class_name=None,class_name_re=None, parent=None, process=None, title=None, title_re=None, top_level_only=True, visible_only=True, enabled_only=False, best_match=None, handle=None, ctrl_index=None, predicate_func=None, active_only=False, control_id=None)
于 2014-05-04T20:15:53.427 に答える