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)