PC端自动化测试实战教程-3-pywinauto 启动PC端应用程序 - 下篇(详细教程)
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端应用程序 - 下篇(详细教程)的更多相关文章
- Appium移动端自动化测试-安卓真机+模拟器启动
一.环境准备 appium-pythin-client版本(0.17),selenium版本(2.53.6)(版本需对应,否则执行脚本可能出错,我用的是这两个版本) macOs版本10.14.1(ap ...
- Java自动化测试框架-11 - TestNG之annotation与并发测试篇 (详细教程)
1.简介 TestNG中用到的annotation的快速预览及其属性. 2.TestNG基本注解(注释) 注解 描述 @BeforeSuite 注解的方法只运行一次,在当前suite所有测试执行之前执 ...
- Java自动化测试框架-12 - TestNG之xml文件详解篇 (详细教程)
1.简介 现在这篇,我们来学习TestNG.xml文件,前面我们已经知道,TestNG就是运行这个文件来执行测试用例的.通过本篇,你可以进一步了解到:这个文件是配置测试用例,测试套件.简单来说,利用这 ...
- appium自动化测试实战
一.Appium的介绍 Appium是一款开源的自动化测试工具,其支持iOS和安卓平台上的原生的,基于移动浏览器的,混合的应用. 1. 使用appium进行自动化测试的好处 Appium在不同平台 ...
- 关于《Python自动化测试实战》
作者有话说 笔者写这本书的初心是想通过自身经验分享一些在自动化测试领域中的实用技术,能够帮助那些正在从事自动化测试相关工作或者准备转型自动化测试的测试人员.任何一门技术涵盖的知识点都是非常广泛的,可能 ...
- NumPy 超详细教程(2):数据类型
系列文章地址 NumPy 最详细教程(1):NumPy 数组 NumPy 超详细教程(2):数据类型 NumPy 超详细教程(3):ndarray 的内部机理及高级迭代 文章目录 NumPy 数据类型 ...
- NumPy 超详细教程(3):ndarray 的内部机理及高级迭代
系列文章地址 NumPy 最详细教程(1):NumPy 数组 NumPy 超详细教程(2):数据类型 NumPy 超详细教程(3):ndarray 的内部机理及高级迭代 ndarray 对象的内部机理 ...
- NumPy 超详细教程(1):NumPy 数组
系列文章地址 NumPy 最详细教程(1):NumPy 数组 NumPy 超详细教程(2):数据类型 NumPy 超详细教程(3):ndarray 的内部机理及高级迭代 文章目录 Numpy 数组:n ...
- 《手把手教你》系列基础篇(七十三)-java+ selenium自动化测试-框架设计基础-TestNG实现启动不同浏览器(详解教程)
1.简介 上一篇文章中,从TestNg的特点我们知道支持变量,那么我们这一篇就通过变量参数来启动不同的浏览器进行自动化测试.那么如何实现同时启动不同的浏览器对脚本进行测试,且听宏哥娓娓道来. 2.项目 ...
- selenium2 Webdriver + Java 自动化测试实战和完全教程
selenium2 Webdriver + Java 自动化测试实战和完全教程一.快速开始 博客分类: Selenium-webdriverselenium webdriver 学习selenium ...
随机推荐
- C/C++ 以及 Rust 中的 getch() 实现
getch 是一个在 C 语言编程中常用的函数,用于从键盘读取一个字符,但不回显到屏幕上. 在 Windows 环境下,getch 实现通常包含在 <conio.h> 头文件中.需要注意的 ...
- Linux编译安装Canal
一.简介 下载源码:git clone https://github.com/alibaba/canal.git canal.adapter: 作用1:对接上游消息,包括kafka.rocketmq. ...
- NOI春季测试游记
Day -20 本来以为不能报名,但听说初中生可以报名,遂报名. Day -20~-2 刷一些题,并学了大量新知识如DP. Day n(-15≤n≤-5) 在公众号的名单上看到我的名字. 同校还有人参 ...
- QT5笔记:5. QtCreator 的快捷键
常用的快捷键: F4 同名头文件和源文件之间切换 F2 声明和定义切换 Ctrl + / 注释 F10\F11 单步调试
- VMware16虚拟机安装激活教程
1.开始安装前需要准备好的软件 VMware-workstation-full-16--虚拟机软件(必要) 获取方式: 官方下载地址:https://www.vmware.com/cn/product ...
- PPT_标题
一 调节字体大小 1.字体-字魂71号-御守锦书 2.更改字体大小(138.96.80.80.96.138) 3.字体背景 复制背景图片->选择ppt文字->设置图片格式->选择来自 ...
- python list 差集
前言 有时候我们希望基于list得到一个集合C,该集合C的元素可以被描述为元素在集合A中而不在集合B中.即:差集. 基于set A = [1, 2, 3] B = [2, 3, 4] C = set( ...
- php 过滤掉emoji表情
<?php function filter_emoji($str) { $str = preg_replace_callback( //执行一个正则表达式搜索并且使用一个回调进行替换 '/./u ...
- 使用命令行控制wireshark对抓包文件进行针对性处理的命令总结
近日,工作中有开发对抓包文件进行针对性过滤的小程序的需求,兜兜转转踩了很多坑后还是绕回了wireshark. 作为最出名的开源软件之一,wireshark也具有使用命令行进行操作的功能,这就是我们今天 ...
- SpringBoot+Thymeleaf渲染下拉框异常解决
常规方式 <select class="form-control" name="operationType" th:field="${itemT ...