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)