pywinauto入门


  • Python中GUI自动化工具:
  1.  PyAutoGui:一个流行的跨平台库(具有基于图像的搜索功能,没有基于文本的控件操作)
  2.  Lackey:基于图像模式匹配
  3.  AXUI:MS UI  Automation API控件的一个包装器
  4.  winGuiAuto:使用Win32 API的控件模块
  5.  Pywinauto:同时支持控件操作和图像操作,支持Win32 API和MS UI Automation API
  • Pywinauto的环境安装:

  安装前提:1、安装好 python(建议使用 python3.5以上的版本);2、确认pip是否能正常使用

  安装方式一:pip在线安装,pip install pywinauto

  安装方式二:离线安装

  1、下载压缩包:python第三方库管理平台:https://pypi.org/

  2、解压压缩包

  3、cmd进入压缩之后的文件夹中

  4、运行:python setup.py install进行安装

  • PC端程序自动化的切入点:

   确定应用程序的可访问技术,pywinauto的后端,支持控件的访问技术:

  1、Win32 API(backend="win32")- 默认的backend,MFC,VB6,VCL。简单的WinForms控件和大多数旧的应用程序

  2 、MS UI Automation API ( backend = " uia " ):WinForms , WPF , Store apps , Qt5 , 浏览器

  • 启用应用程序:

  切入点主要是限制自动化控制进程的范围,如一个程序有多个实例,自动化控制一个实例而保证其他实例(进程)不受影响。在pywinauto中主要有两种对象可以建立这种切入口:

  1、application:application的作业范围是一个进程,如一般的桌面应用程序都未此类

  2、Desktop:Desktop的作用范围可以跨进程。主要用于一个程序可以包含多个实例(进程)的程序

  •   程序检测相关辅助工具的使用:
  1. GUI对象检查/Spy工具:

  Inspect.exe(C: Program Files (*86)Windows Kits\10\bin\x64):Inspect.exx是Microsoft创建的另一个很棒的工具。它包含在Windows SDKI中,因此可以在x64 Windows上的以下位置找到它

  spy++.exe,它使用win32 API。如果spy+能够显示程序的所有控件,那么该应用程序适合使用win32的 backend

    ViewWizard,Viewwizard(窗口信息査看精灵),使用起来非常简洁可查看窗口和控件句柄、类名、标题、风格等信息(百度搜索下载即可)

  •  pywinauto打开到指定的应用程序

from pywinauto.application import Application
# 打开指定的应用程序
# 1、打开windows自带的应用:记事本
pc = Application(backend="uia").start("notepad.exe")

# 2、打开任意一个应用程序
pc = Application(backend="uia").start(r"C:\Program Files\PremiumSoft\Navicat Premium 12\navicat.exe")
  •  如何选择应用程序的窗口

  1、根据窗口标题或者类名选择:dlg = app[窗口类名/标题]

  2、根据窗口的类名选择窗口:dlg = app.窗口类名

  # 非英文程序,推荐使用方式一

from pywinauto.application import Application# 启动navicat应用程序
pc = Application(backend="win32").start(r"C:\Program Files\PremiumSoft\Navicat Premium 12\navicat.exe")
time.sleep(10)
# 方式一:使用类名来选择窗口,app[类名/标题]:推荐使用改方式
# dlg = pc['TNavicatMainForm']
# 通过窗口标题去选择窗口
# dlg = pc["Navicat Premium"]

# 方式二:app。窗口类名
dlg = pc.TVirtualStringTree
# 打印窗口中所有的控件
dlg.print_control_identifiers()
  •  应用程序的窗口的操作方法
from pywinauto.application import Application
import time

# 启动navicat应用程序
pc = Application(backend="win32").start(r"notepad.exe")
# 通过窗口标题去选择窗口
dlg = pc["Notepad"]

# 窗口最大化
dlg.maximize()
# 查看窗口显示状态
status = dlg.get_show_state()
print(status)  # 运行结果:3

# 窗口最小化
dlg.minimize()

# 查看窗口显示状态
rect = dlg.rectangle()
print(rect)  # 运行结果:(L-32000, T-32000, R-31840, B-31972)
# 像素坐标从左上角点开始计算,左上右下
# 窗口恢复正常大小
dlg.restore()

# 关闭窗口
dlg.close()
  •  应用程序的窗口上的选择

 

 

 

 

 

 

 

  

 

 

 

 

 

 

 

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM