我有一个名为' Syntext Serna' xml编辑器。我可以打开该应用程序,但当我尝试访问它的菜单时,它会给我这样的错误:
Traceback (most recent call last):
File "test.py", line 4, in <module>
app.dlg.MenuSelect("Document->Open")
File "c:\python27\lib\site-packages\pywinauto\application.py", line 238, in __getattr__
ctrls = _resolve_control(self.criteria)
File "c:\python27\lib\site-packages\pywinauto\application.py", line 795,
in _resolve_control
raise e.original_exception
pywinauto.findbestmatch.MatchError: Could not find 'dlg' in
'[u'Syntext Serna Free 4.3.0-3001QWidget', u'QWidget',
u'Syntext Serna Free 4.3.0-3001']'
我的代码:
from pywinauto import application
app = application.Application.start(r"C:\Program Files\Syntext\
Serna Free 4.3\bin\serna.exe")
dlg = "Syntext Serna Free 4.3.0-3001"
app.dlg.MenuSelect("Document->Open")
我认为这背后的主要原因是,应用程序名称之间有空格。有没有解决方法呢?
答案 0 :(得分:3)
dlg名称离实际对话框标题太远了。你需要这样的更接近的名字:
app.Syntext_Serna_Free_4_3_0_3001.menu_select('Document->Open')
将对话框名称与空格/短划线/等匹配的另一种方法是使用按键访问(这种方法也可以抵错拼写错误):
app['Syntext Serna Free 4.3.0-3001'].menu_select('Document->Open')
如果你需要完全相同的标题,只需直接创建WindowSpecification对象(如果你的名称对话/控件很少,这是最可靠的匹配方法):
app.window(title='Syntext Serna Free 4.3.0-3001').menu_select('Document->Open')