uiautomation
安装uiautomation
pip install uiautomation
Inspect软件的使用
Inspect是windows自带的软件,不需要单独安装,安装目录在:C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64,不同的版本路径可能略微不同。
可以将该目录添加到环境变量中,这样可以直接在cmd中输入inpsect就可以启动软件。该软件的具体介绍可以参考这篇文章:https://juejin.cn/post/7088875711099830308
具体代码实例
如果使用多线程需要打开端口:pythoncom.CoInitialize()
import uiautomation as ua import threading import pythoncom ukey_pwd = "12345678" def input_password(): pythoncom.CoInitialize() while True: try: window_name = "证书助手" window = ua.WindowControl(searchDepth=1, Name=window_name) # 置顶 window.SetTopmost(True) # 填写密码 window.EditControl(ClassName="Edit").GetValuePattern().SetValue(ukey_pwd) window.ButtonControl(Name="确定").Click(simulateMove=False) except Exception: print("未找到窗口") threading.Thread(target=input_password).start()
获取复选框状态(0表示未勾选,1表示勾选):
window.CheckBoxControl(Name="下次更新可用前不再询问。").GetTogglePattern().ToggleState
相关错误排查
常见错误:comtypes.gen.UIAutomationClient' has no attribute 'IUIAutomation'
在使用uiautomation相关代码时,会在comtypes包中生成一个gen包(里面是相关的代码),如果出现上面的错误,检查gen包中的代码是否完成,如果不完整
手动删除该包,然后再次运行。
如果使用多线程操作uiautomation,并且在主进程中使用同步方式操作uiautomation,一定要让同步的代码在线程之间执行,不然就会出现上述报错。