Pywinauto桌面应用自动化01--安装和启动

目录

一、安装Pywinauto

二、定位元素的工具

三、启动和连接应用程序

1、启动应用程序

2、连接已经打开的应用程序

1)通过进程号连接

2)通过窗口句柄连接

一、安装Pywinauto

pip install pywinauto

官方文档:What is pywinauto — pywinauto 0.6.8 documentation

查看是否安装成功:

pip list 

二、定位元素的工具

查看界面上的元素的相关属性,可用于自动化测试中元素的定位和识别等;

1、网上推荐的inspect工具

  • Spy++ (定位元素工具(win32))
  • Inspect(定位元素工具(uia))
  • UI Spy (定位元素工具)
  • Swapy(可简单生成pywinauto代码)

2、我自己使用的inspect工具

  • Accessibility Insights for Windows

下载地址和官方文档:Accessibility Insights for Windows

是 Windows 官方推荐的辅助工具,用来查看窗口控件的信息。

三、启动和连接应用程序

1、启动应用程序

Pywinauto中backend有两种:win32和uia,默认为win32,win32(可不填)在自带程序中使用,其他需下载安装等程序一般使用uia。

Application的可访问技术适用的应用类型

  • MS UI Automoation API(backend=“uia”)
    • 一般是WinForms、WPF、Store app商店应用、Qt5、浏览器、navicat;
  • win32 API(backend=“win32”)
    • 一般是MFC、VB6、VCL,简单的WinForms控件和大多数旧的应用程序

举例:

1)启动记事本

from pywinauto.application import Application

# 启动记事本
app = Application(backend="uia").start("notepad.exe")

运行后,记事本打开 

2)启动QQ

from pywinauto.application import Application

# 启动QQ
qq_start_path = r"D:\\Program Files\\Tencent\\QQ\\Bin\\QQScLauncher.exe"
app = Application(backend='uia').start(qq_start_path)

启动QQ换一种写法:

import pywinauto

# 启动QQ
qq_start_path = r"D:\\Program Files\\Tencent\\QQ\\Bin\\QQScLauncher.exe"
app = pywinauto.Application(backend='uia').start(qq_start_path)

运行后,QQ启动,打开登录窗口

2、连接已经打开的应用程序

1)通过进程号连接

打开记事本程序

打开任务管理器-详细信息,查看进程号PID,如图记事本进程号为30116

 通过进程号连接已经启动的记事本程序

from pywinauto.application import Application

# 通过进程号连接已经启动的记事本程序,记事本进程号为30116
pid = 30116
app = Application(backend='uia').connect(process=pid)

# 输出记事本窗口标题
main_title = app.top_window().get_properties()['texts'][0]
print(main_title)

运行后,输出结果:

*无标题 - 记事本

2)通过窗口句柄连接

打开记事本程序

再打开Accessibility Insights for Windows工具,选中记事本应用后,inspect工具自动识别到窗口,找到记事本的窗口句柄NativeWindowHandle为2564730;

通过窗口句柄连接已经启动的记事本程序

from pywinauto.application import Application

# 通过窗口句柄连接已经启动的记事本程序,记事本的窗口句柄NativeWindowHandle为2564730
handle = 2564730
app = Application(backend='uia').connect(handle=handle)

# 输出记事本窗口标题
main_title = app.top_window().get_properties()['texts'][0]
print(main_title)

运行后,输出结果:

test001.txt - 记事本

猜你喜欢

转载自blog.csdn.net/nikeylee/article/details/129476440
今日推荐