Python PC 端自动化测试实战教程-3-pywinauto 启动 PC 端应用程序 - 下篇(详细教程)

北京-宏哥 · November 19, 2025 · 179 hits

1.简介

经过上一篇的学习、介绍和了解,pywinauto 的强大,不言而喻吧!宏哥讲解和分享的是电脑自带和安装的应用程序。有些小伙伴或者童鞋们已经迫不及待地私信宏哥,如果在电脑中这个应用程序已经启用了,我如何去启动这个已经启动的应用程序呢?各位别急,宏哥今天就会讲解和分享如何启动 PC 端已经启动的应用程序。

2.启动已启动的应用程序

上一篇的例子细心的小伙伴或者童鞋们会发现都是程序没有运行起来的,那么想要启动已经运行起来的程序应该怎么做?

connect() 在要启动自动化应用程序时使用。 要指定已在运行的应用程序,您需要指定以下之一:

  • process:应用程序的进程 ID,例如 app = Application().connect(process=2341)
  • handle:应用程序窗口的窗口句柄,例如,app = Application().connect(handle=0x010f0c)
  • path:进程的可执行文件的路径(GetModuleFileNameEx 用于查找每个进程的路径并与传入的值进行比较),例如:app = Application().connect(path=r"c:\windows\system32\notepad.exe")
  • 或者指定窗口的参数的任意组合,这些都被传递给 pywinauto.findwindows.find_elements() 函数。 例如:
  • app = Application().connect(title_re=".*Notepad", class_name="Notepad")

注意: 在使用 connect*() 之前,应用程序必须准备好(已启动)。

2.1 通过进程号启动

宏哥今天这里以我们熟悉的大鹅 QQ 为例,进行演示!

1.如果我们想操作一个已经打开的应用程序,可以根据应用的进程号 PID 去操作,先查看应用进程 PID,如下图所示:

2.通过 connect() 方法连接,process 参数指定 PID,PID 是不固定的,每次启动都会变化。

2.1.1 代码设计

2.1.2 参考代码

# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-11-19
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Windows GUI自动化测试-2-pywinauto 启动PC端应用程序(详细教程)
'''

# 3.导入模块

from pywinauto.application import Application
# 启动QQ
app = Application(backend="uia").connect(process=19288)
print(app)

2.1.3 运行代码

1.运行代码,右键 Run'Test',就可以看到控制台输出,如下图所示:

2.2 通过窗口句柄启动

通过窗口句柄的形式打开。问题来了?怎么查看窗口句柄?

1.通过 Inspect.exe 查看窗口句柄,如下图所示:

handle 句柄 Inspect.exe 查看是 16 进制的,每次启动也会变化。

因为进程 PID 和 handle 句柄每次启动都会变化,所以我们应该用参数的组合。

2.还可以通过前面说的 viewWizard 工具进行查看(将放大镜拖到已启动的应用程序),通过下图可以看到窗口的句柄为 133326,如下图所示:

2.2.1 代码设计

2.2.2 参考代码

# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-11-19
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Windows GUI自动化测试-2-pywinauto 启动PC端应用程序(详细教程)
'''

# 3.导入模块

from pywinauto.application import Application
# 启动QQ
app = Application(backend="uia").connect(process=10720,handle=0x1059C)
print(app)

2.2.3 运行代码

1.运行代码,右键 Run'Test',就可以看到控制台输出,如下图所示:

根据 title 和 class 名称启动,根据 title 和 class 名称连接也有缺点,必须窗口在桌面是开着的才行,挂后台的应用无法连上。

参考代码如下:

# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-11-19
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Windows GUI自动化测试-2-pywinauto 启动PC端应用程序(详细教程)
'''

# 3.导入模块

from pywinauto.application import Application
# 启动QQ
app = Application('uia').connect(title_re="QQ", class_name="TXGuiFoundation")
print(app)

2.3 应用程序路径

1.还可以根据 exe 应用程序的路径,路径是固定的,但是宏哥运行报错了。如下图所示:

2.宏哥猜测可能需要配置环境变量,配置好了,就应该可以,宏哥这里由于时间的关系没有实际操作,只是给提供一种解决思路。

2.3.1 代码设计

2.3.2 参考代码

# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-11-19
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Windows GUI自动化测试-2-pywinauto 启动PC端应用程序(详细教程)
'''

# 3.导入模块

from pywinauto.application import Application
# 启动QQ
app = Application('uia').connect(path=r'D:\QQ\Bin\QQScLauncher.exe')
print(app)

2.4Desktop() 方法

还有另外一种连接方式, 通过Desktop 方法更简单。通过标题的方式打开。以计算器为例演示,有兴趣的自己可以尝试 QQ。

2.4.1 代码设计

2.4.2 参考代码

# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-11-19
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Windows GUI自动化测试-2-pywinauto 启动PC端应用程序(详细教程)
'''

# 3.导入模块
import pywinauto

# 通过窗口打开
app = pywinauto.Desktop()
win = app['计算器']
print(win)

2.4.3 运行代码

1.运行代码,右键 Run'Test',就可以看到控制台输出,如下图所示:

3.小结

到此 PC 端自带和安装的应用程序启动,以及已启动的自带和安装的应用程序启动,宏哥讲解和分享就介绍到这里,非常简单就是一句代码搞定。 好了,时间不早了今天就分享到这里,感谢你耐心地阅读!

No Reply at the moment.
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up