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

PC端自动化测试实战教程-3-pywinauto 启动PC端应用程序 - 下篇(详细教程)的更多相关文章

  1. Appium移动端自动化测试-安卓真机+模拟器启动

    一.环境准备 appium-pythin-client版本(0.17),selenium版本(2.53.6)(版本需对应,否则执行脚本可能出错,我用的是这两个版本) macOs版本10.14.1(ap ...

  2. Java自动化测试框架-11 - TestNG之annotation与并发测试篇 (详细教程)

    1.简介 TestNG中用到的annotation的快速预览及其属性. 2.TestNG基本注解(注释) 注解 描述 @BeforeSuite 注解的方法只运行一次,在当前suite所有测试执行之前执 ...

  3. Java自动化测试框架-12 - TestNG之xml文件详解篇 (详细教程)

    1.简介 现在这篇,我们来学习TestNG.xml文件,前面我们已经知道,TestNG就是运行这个文件来执行测试用例的.通过本篇,你可以进一步了解到:这个文件是配置测试用例,测试套件.简单来说,利用这 ...

  4. appium自动化测试实战

    一.Appium的介绍   Appium是一款开源的自动化测试工具,其支持iOS和安卓平台上的原生的,基于移动浏览器的,混合的应用. 1. 使用appium进行自动化测试的好处 Appium在不同平台 ...

  5. 关于《Python自动化测试实战》

    作者有话说 笔者写这本书的初心是想通过自身经验分享一些在自动化测试领域中的实用技术,能够帮助那些正在从事自动化测试相关工作或者准备转型自动化测试的测试人员.任何一门技术涵盖的知识点都是非常广泛的,可能 ...

  6. NumPy 超详细教程(2):数据类型

    系列文章地址 NumPy 最详细教程(1):NumPy 数组 NumPy 超详细教程(2):数据类型 NumPy 超详细教程(3):ndarray 的内部机理及高级迭代 文章目录 NumPy 数据类型 ...

  7. NumPy 超详细教程(3):ndarray 的内部机理及高级迭代

    系列文章地址 NumPy 最详细教程(1):NumPy 数组 NumPy 超详细教程(2):数据类型 NumPy 超详细教程(3):ndarray 的内部机理及高级迭代 ndarray 对象的内部机理 ...

  8. NumPy 超详细教程(1):NumPy 数组

    系列文章地址 NumPy 最详细教程(1):NumPy 数组 NumPy 超详细教程(2):数据类型 NumPy 超详细教程(3):ndarray 的内部机理及高级迭代 文章目录 Numpy 数组:n ...

  9. 《手把手教你》系列基础篇(七十三)-java+ selenium自动化测试-框架设计基础-TestNG实现启动不同浏览器(详解教程)

    1.简介 上一篇文章中,从TestNg的特点我们知道支持变量,那么我们这一篇就通过变量参数来启动不同的浏览器进行自动化测试.那么如何实现同时启动不同的浏览器对脚本进行测试,且听宏哥娓娓道来. 2.项目 ...

  10. selenium2 Webdriver + Java 自动化测试实战和完全教程

    selenium2 Webdriver + Java 自动化测试实战和完全教程一.快速开始 博客分类: Selenium-webdriverselenium webdriver 学习selenium ...

随机推荐

  1. VMware常用操作

    VMware常用操作 VMware作为一款功能强大的虚拟化软件,为用户提供了一个灵活.高效的虚拟环境.在日常使用中,掌握VMware的常用操作对于提高工作效率.优化资源配置至关重要.以下将详细介绍VM ...

  2. Anoii网络库之Timer实现

    Timer的实现挺值得拿出来聊一聊的 Anoii网络库的事件循环: Timer是使用poll的timeout参数实现的,所以定时的精度是毫秒,对于一个网络库而言这足够了.如果不够的话,还可以使用tim ...

  3. 常用的linux命令以及详解

    Linux系统中包含了大量的命令,这些命令是用户与系统交互的主要方式.以下是一些常用的Linux命令及其详细解释: 1. 文件和目录操作 ls:列出目录内容. ls:列出当前目录的文件和子目录. ls ...

  4. QT5笔记: 28. SplashWindow 没听懂,无内容

    没有说明这个SplashWindow咋用 大概小人愚笨 this->setWindowFlag(Qt::SplashScreen);莫非是这个?

  5. Android设备基础信息获取 源码修改方式 APK开发

    APK 获取设备信息 头文件 import java.io.BufferedReader; import java.io.File; import java.io.FileFilter; import ...

  6. ‌PCI-5565PIO主要应用场景

    ‌PCI-5565PIO主要应用场景包括军事领域.工业自动化和控制系统.仿真与培训以及数据采集与分发‌.在军事领域,PCI-5565PIO可用于航空航天系统的飞行控制计算机.导航系统和传感器系统之间的 ...

  7. 用Logseq记日报和管理文献

    优缺点浅评 Logseq是一款双链笔记软件,其优点结合使用场景概括来说包括 开箱即用的极简界面,非常适合用来写日报 灵活的双链,强大的PDF标注,适合构建文献库 使用markdown格式来本地存储笔记 ...

  8. 开源一款数据转换扩展板-FreakStudio多米诺系列

    原文链接: FreakStudio的博客 摘要 数据转换板通过I2C接口进行信号采集和输出,支持最多16通道输入和2通道输出.具备860Hz采样率和50KHz输出频率,采用16位ADC和12位DAC芯 ...

  9. Flink学习(一) 行情介绍

    想进大厂,必须掌握 Flink 技术!!! 随着大数据时代的发展.海量数据的实时处理和多样业务的数据计算需求激增,传统的批处理方式和早期的流式处理框架也有自身的局限性,难以在延迟性.吞吐量.容错能力, ...

  10. 通过Kube-rbac-proxy保护 Kubernetes 工作负载中的应用容器

    1.概述 kube-rbac-proxy 是 Kubernetes 生态中一个专注于"基于角色的访问控制(RBAC)"的轻量级代理组件,通常以 Sidecar 容器的形式部署在 P ...