Pywinauto之Windows UI自动化3
- 2019 年 10 月 8 日
- 筆記
上篇说明了如何打开PC端应用程序及控一些常用控件,接下来将继续完成后续控件操作
一、指定文件路径

"""点击窗口左上角Load packet""" load_packet_window = window.child_window(title="",auto_id="59392", control_type="ToolBar") load_packet = load_packet_window.child_window(title="Load packet", control_type="Button") load_packet.click() """定位打开窗口,选择输入文件名(这里暂把文件路径固定,后续可做参数化文件路径)""" open_file = window.child_window(title="打开",control_type="Window") open_file.print_control_identifiers() file_edit_path = open_file.child_window(title="文件名(N):", auto_id="1148", control_type="Edit") file_edit_path.set_text(r"\10.0.3.206share_nxosROMDebugMS16GP-F1V1.1.1_2019.07.08_15.01.19GP-F1_ms16_V1.1.1_pacGP-F1_ms16_V1.1.1.pac") """点击打开按钮""" file_open = window.child_window(title="打开(O)", auto_id="1", control_type="Button") file_open.click() time.sleep(2)
二、获取进度条状态
后续再完善该方法
三、设置等待时长
1、使用time.sleep()
time.sleep(3)
2、查询等待,即循环判断是否有弹窗,若存在,则退出循环。
while(True): if app.window(title="否(N)", auto_id="7", control_type="Button").exists(): break app['否(N)'].Ok.click()
3、查询等待法。查询有个缺点就是如果一直没出现,就会一直等待。所以我们最好设置一个等待时间限。
app.window(title="否(N)", auto_id="7", control_type="Button").Wait('enabled',timeout=300) app['否(N)'].Ok.click()
四、全部代码
最后汇总下整体代码
#!/usr/bin/env python # -*- coding: utf-8 -*- # @File Name: python_PC.py # @Time : 2019/7/26 # @Author : zhong # @Blog : https://www.jianshu.com/search?q=keitwo&page=1&type=note # @QQ交流 : 3227456102 from pywinauto import Application import time app = Application(backend="uia").start(r"D:toolszhanxunpingtaiUPGRADEDOWNLOAD_R21.0.0001UPGRADEDOWNLOAD_R21.0.0001BinUpgradeDownload.exe") """判断是否有弹框""" while not app.top_window(): time.sleep(3) """检查指定对话框的名称""" window = app.window(title="UpgradeDownload - R21.0.0001") window.print_control_identifiers() # 打印'标识符',将控件及其后代的标识符打印到深度深度 time.sleep(2) """是否加载上一次路径控件信息,选择否""" load_window = window.child_window(title="否(N)", auto_id="7", control_type="Button") # 点击Button按钮 否 if load_window: load_window.click() """点击窗口左上角Load packet""" load_packet_window = window.child_window(title="",auto_id="59392", control_type="ToolBar") load_packet = load_packet_window.child_window(title="Load packet", control_type="Button") load_packet.click() """定位打开窗口,选择输入文件名(这里暂把文件路径固定,后续可做参数化文件路径)""" open_file = window.child_window(title="打开",control_type="Window") open_file.print_control_identifiers() file_edit_path = open_file.child_window(title="文件名(N):", auto_id="1148", control_type="Edit") file_edit_path.set_text(r"你当前存放软件的路径") """点击打开按钮""" file_open = window.child_window(title="打开(O)", auto_id="1", control_type="Button") file_open.click() time.sleep(30) """通过烧录线PC与设备连接,点击窗口的start downing 按钮,开始烧录软件""" load_packet_window = window.child_window(title="",auto_id="59392", control_type="ToolBar") start_down = window.child_window(title="Start downloading", control_type="Button") start_down.click() time.sleep(80)