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)