pip install --upgrade pywinauto
目录
P1 自动化的切入点
P2 程序检查辅助工具
P3 打开指定程序
P4 连接已经打开的程序
P5 选择应用程序的窗口
P6 应用程序的窗口操作方法
P7 窗口空间的相关操作
P8 窗口的分类
P9 窗口控件属性的获取
P10 窗口及控件截图处理
P11 菜单控件的相关操作
P12 Pywinauto的等待机制
P13 编辑类控件的基本操作
P14 模拟用户键盘操作
P15 模拟鼠标操作
from pywinauto.application import Application app = Application(bacckend = "uia").start("notpad.exe") from pywinauto.application import Application app = Application(bacckend = "后端类型").start("程序位置路径") //.strat(r"程序位置路径") from pywinauto.application import Application app = Application("uia").connect(process = 4444) // 进程号 app = Application("uia").connect(handle = 1904040) // 窗口句柄 print(app) // 检测 from pywinauto.application import Application app = Application(bacckend = "uia").start("notpad.exe") //打开程序 dlg = app["窗口类名/标题"] //方式一.选择窗口 dlg = app.窗口类名 //方式二.适合英文软件 dlg.print_control_identifiers() //打印窗口中所有的控件,检测是否选择窗口成功 from pywinauto.application import Application app = Application(bacckend = "uia").start("notpad.exe") //打开程序 dlg = app["notepad"] //选择窗口 dlg = maximize() //窗口最大化 dlg = minimize() //窗口最小化 dlg = restore() //窗口恢复正常大小 status = dlg.get_show_state() //查找窗口显示状态 print(status) //最大化1、正常0 dlg.close() //关闭窗口 rect = dlg.rectangle() //获取当前窗口显示坐标 print(rect) //左,上,右,下 from pywinauto.application import Application app = Application(bacckend = "uia").start("notpad.exe") //打开程序 dlg = app["notepad"] //选择窗口 dlg.print_control_identifiers() //查看窗口上所有的控件 menu = dlg["Menu"] //选择菜单 print(menu.print_control_identifiers()) file = menu.child_window(title="文件",control_type="MenuItem") //选择菜单项:文件 file.print_control_identifiers() 状态栏 | Status Bar | 静态内容 | Static |
按钮 | Button | 复选框 | Check Box |
单选框 | Radio Button | 组框 | Group Box |
组合框 | Combo Box | 对话框(窗口) | Dialog |
编辑栏 | Edit | 头部内容 | Header |
列表框 | List Box | 列表显示控件 | List View |
弹出菜单 | Popup Menu | 选项卡控件 | Tab Control |
工具栏 | Tool bar | 工具提示 | Tool Tips |
树状视图 | Tree View | 菜单 | Menu |
菜单项 | Menu Item | 窗格 | Pane |
from pywinauto.application import Application app = Application(bacckend = "uia").start("notpad.exe") //打开程序 dlg = app["notepad"] //选择窗口 menu = dlg["Menu"] //选择菜单 file = menu.child_window(title="文件") //选择菜单项:文件 print(dlg.wrapper_object()) //查看控件类型:wrapper_object print(menu.wrapper_object()) print(file.wrapper_object()) print(dir(dlg.wrapper_object())) //查看对象所支持的方法:dir print(file.texts()) //控件的文本内容获取:texts print(dlg.children()) //获取子元素:children print(menu.class_name()) //获取控件类名:class_name print(menu.get_properties()) //获取控件的属性,返回的字典:get_properties(以上属性都会列出) from pywinauto.application import Application app = Application(bacckend = "uia").start("notpad.exe") //打开程序 dlg = app["notepad"] //选择窗口 menu = dlg["Menu"] //选择菜单 file = menu.child_window(title="文件") //选择菜单项:文件 pic = dlg.capture_as_image() //截图 print(pic) //打印信息 pic.save("01.png") //保存截图 from pywinauto.application import Application app = Application(bacckend = "uia").start("notpad.exe") //打开程序 dlg = app["notepad"] //选择窗口 menu = dlg["Menu"] //选择菜单 file = menu.child_window(title="文件") //选择菜单项:文件 // -----菜单控件相关的操作----- print(menu.items()) //获取菜单的子菜单项 m = menu.item_by_index(0) //通过下标去选择菜单项:item_by_index print(m) n = menu.item_by_path("文件->新建连接") //通过路径去选择菜单项:item_by_path print(n) // -----菜单项的操作方法----- file.click_input() //点击菜单项的方法:click_input import time time.sleep(1) //等待时间 from pywinauto.application import Application app = Application(bacckend = "uia").start("notpad.exe") //打开程序 dlg = app["notepad"] //选择窗口 menu = dlg["Menu"] //选择菜单 file = menu.child_window(title="文件") //选择菜单项:文件 file.click_input() //点击文件 menu.item_by_path("文件->新建连接").click_input() //点击新建连接 # 等待窗口处于可见状态 new_dlg = app["新建连接"] //选择新建连接的窗口 new_dlg.wait(wait_for="ready",timeout=10,retry_interval=1) //如果状态为'ready',就会执行下一行代码。 # 等待窗口处于不可见状态 new_dlg.wait_not(wait_for_not="ready",timeout=10,retry_interval=1) //如果状态为'ready',就会执行下一行代码。 app = Application().connect(process=17260) //连接打开的进程 app.wait_cpu_usage_lower(threshold=20,timeout=5,usage_interval=1) print("等待通过,当前该进程cup占用率低于20%") from pywinauto.timings import wait_until """ 等函数返回的结果为5的时候,继续往下执行 """ i = 0 def work(): global i i += 1 print("当前i的值为",i) return i # 等待work返回的结果为5,继续往下执行 wait_until(10,1,work,5) print("等待通过") """ 打开笔记本,替换里面的文字。 """ import pywinauto app = pywinauto.Application().start("notepad.exe") //运行程序 dlg = app["无标题 - 记事本"] //选择主窗口 dlg.print_contol_identifiers() //获取窗口的控件信息 dlg["Edit"].type_keys("这里是输入的文字.") //选择编辑框 dlg.menu_select("编辑->替换(R)") //通过菜单选择替换(这个方法,有的程序能用,有的不能用) app["替换"].print_control_identifiers() //获取替换窗口的控件信息 app["替换"]["Edit1"].type_keys("666") //选择查找编辑框 app["替换"]["Edit2"].type_keys("999") //选择替换为编辑框 app["替换"]["Button3"].click() //选择全部替换按钮,并点击 ESC | VK_ESCAPE(27) | Shift | VK_SHIFT(16) |
回车 | VK_RETURN(13) | Ctrl | VK_CONTROL(17) |
TAB | VK_TAB(9) | Alt | VK_MENU(18) |
Caps Lock | VK_CAPITAL(20) | 空格 | VK_SPACE(32) |
退格 | VK_BACK(8) | 左/右win | VK_LWIN(91) / RWIN(92) |
send_keys("{VK_LWIN}") send_keys("cmd") send_keys("{VK_RETURN}") send_keys("{VK_LWIN}cmd{VK_RETURN}") from pywinauto.keyboard import send_keys send_keys("^a") send_keys("^+n") send_keys("%+{VK_F9}") from pywinauto import mouse mouse.click(coords=(580,52)) #默认鼠标左键
下一篇:Python 闭包详解