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,一定要让同步的代码在线程之间执行,不然就会出现上述报错。

 

posted @ 2024-01-18 10:28  xdl_smile  阅读(57)  评论(0编辑  收藏  举报