我正在使用pywinauto自动化点击DiffDaff软件上的一些按钮.
我的意图是:
第1步:打开DiffDaff软件
第2步:单击"关于"按钮
from pywinauto.application import Application
app = Application.start("C:\Program Files\DiffDaff\DiffDaff.exe")
app.About.Click()
Run Code Online (Sandbox Code Playgroud)但是,我陷入了第2步,控制台显示错误:
File "build\bdist.win32\egg\pywinauto\application.py", line 238, in __getattr__
File "build\bdist.win32\egg\pywinauto\application.py", line 788, in _resolve_control
pywinauto.findbestmatch.MatchError: Could not find 'About' in '['', u'DiffDaff - Compare Files, Folders And Web Pages', u'Internet Explorer_Hidden', u'DiffDaff - Compare Files, Folders And Web PagesDialog', 'Dialog']'
Run Code Online (Sandbox Code Playgroud)
哪里,'',u'DiffDaff-比较文件,文件夹和网页',u'Internet Explorer_Hidden',u'DiffDaff-比较文件,文件夹和网页对话','对话'是sotfware的标题
另外,使用命令'app.dialogs.print_control_identifiers()'知道"关于"按钮的确切位置,有输出:
Button - '&About' (L750, T388, R834, B411)
'&About' '&AboutButton' 'Button3'
Run Code Online (Sandbox Code Playgroud)
但是很难理解上面的参数(L750,T388,......的内容/位置) - 你想解释上面所有参数的平均值吗?
以及执行"点击"按钮的方式?
谢谢.
pywinauto需要从Application对象到控制方法的2级层次结构.任何电话的结构都是
app.<DialogName>.<ControlName>.<method>(<params>)
Run Code Online (Sandbox Code Playgroud)
在你的情况下它应该看起来像
app.Dialog.About.click()
Run Code Online (Sandbox Code Playgroud)
如果您需要更真实的点击,请使用click_input()移动光标并以用户身份点击控件.click()只发送WM_CLICK,也不太可靠.
print_control_identifiers() 方法打印以下信息:
<ControlType> - '<Name a la WindowText>' (<rectangle>)
possible names which are most likely useful for object attribute access
Run Code Online (Sandbox Code Playgroud)
提到的代码等同于以下内容:
app.window(best_match='Dialog', top_level_only=True).child_window(best_match='About').click()
Run Code Online (Sandbox Code Playgroud)
pywinauto通过重写__getattribute__方法简化这种结构.
| 归档时间: |
|
| 查看次数: |
13548 次 |
| 最近记录: |