pywinauto批处理文件运行错误

时间:2014-04-30 11:54:58

标签: python-2.7 pywinauto

我是pywinauto的生物学家和新手,我编写了一个使用pywinauto在HYPHY应用程序中打开输入文件的代码,当我在命令行中逐行运行我的代码时它工作正常但是当我将代码作为批处理文件运行时它给出了以下错误。

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()

我想问题是获取输入的窗口(#'请选择批处理文件menue')在开头没有打开,代码的第一部分打开它但是python从头开始查找它找不到它。 我真的很感激如何解决这个问题。

1 个答案:

答案 0 :(得分: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的允许的argumens来处理这种情况,这里是带有默认值的参数列表:

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)