0

我有一个名为“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")

我相信这背后的主要原因是,应用程序名称之间有空格。有什么解决方法吗?

4

1 回答 1

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')
于 2014-10-15T07:54:29.240 回答