我正在尝试使用pywinauto,我认为一个简单的项目就是让它自动执行Windows绘画。事实证明这比我预期的要难。
我想尝试打开此处显示的“属性”菜单项:
到目前为止,我有以下代码:
from pywinauto.application import Application
import pywinauto
app = Application(backend='uia')
p = pywinauto.findwindows.find_element(title_re=".* - Paint")
app.connect(handle=p.handle)
dlg = app.window(title_re=".* - Paint")
dlg.File_tab.click()
该代码将连接到现有的打开的“画图”窗口并打开文件选项卡。从那里我不确定如何实际单击“属性”。我认为诸如“ dlg.Properties.click()”之类的简单内容可能会起作用,但这给了我ElementNotFound错误。
我发现github页上有一些用于Paint Automation的示例代码:
https://github.com/pywinauto/pywinauto/blob/master/examples/mspaint.py
通过查看示例中的第32行,我可以看到他们可以通过调用childwindow并调用它来访问菜单上的项目。 github示例中的第32行说:
dlg.child_window(title='Open', control_type='MenuItem', found_index=0).invoke()
我不完全明白这一点。这是否意味着单击文件选项卡会打开一个新的“子窗口”?我的另一个问题是,调用与单击某些东西相比有什么作用?
我试图使用github示例中的代码,但我不确定如何使它工作。 github示例在文件选项卡上运行“打开”选项。
我试图改写来自github的行,并使用“属性”而不是“打开”,如下所示:
dlg.child_window(title='Properties', control_type='MenuItem', found_index=0).invoke()
当我尝试这样做时,实际上会导致Paint崩溃。
当我从pywinauto打印控件标识符时,“属性”菜单项将出现在控件列表中。看起来像这样:
MenuItem-'属性'(L1,T476,R254,B531)
['PropertiesMenuItem','MenuItem6','Properties']
child_window(title =“属性”,control_type =“ MenuItem”)
如何使用以上信息找出如何正确访问菜单项?
最佳答案
我发现我可以让pywinauto在“属性”菜单项上单击以下行:
dlg.child_window(title="Properties", control_type="MenuItem").invoke()
我仍然不明白“调用”是什么意思,因为在任何文档中似乎都没有描述。
关于python - 使用Windows Paint进行pywinauto测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43647596/