1.简介

经过上一篇的学习、介绍和了解,想必小伙伴或者童鞋们,已经见识到pywinauto的强大了,今天继续介绍pywinauto,上一篇已经可以打开计算器了,这里宏哥在提供其他方法进行打开计算器和非电脑自带程序。pywinauto 可以启动电脑自带的应用程序,也可以启动电脑安装的应用程序。

2.运行指定的应用程序

运行指定的应用程序,顾名思义就是用户指定运行那款程序,就运行那款程序。宏哥这里将其分为两大类:电脑自带的应用程序,如:记事本、计算器等和电脑安装的应用程序,如:QQ、微信等。分好后,接下来看宏哥是如何这两类应用程序的。

2.1启动电脑自带的应用程序

上一篇已经启动计算器了,今天宏哥启动一下记事本,给小伙伴或者童鞋们来演示一下。

通过start() 方法指定exe应用程序的名称即可。start()方法用于启动一个可执行程序

    def start(self, cmd_line, timeout=None, retry_interval=None,
create_new_console=False, wait_for_idle=True, work_dir=None):
"""Start the application as specified by cmd_line"""
# try to parse executable name and check it has correct bitness
if '.exe' in cmd_line and self.backend.name == 'win32':
exe_name = cmd_line.split('.exe')[0] + '.exe'
_warn_incorrect_binary_bitness(exe_name) if timeout is None:
timeout = Timings.app_start_timeout
if retry_interval is None:
retry_interval = Timings.app_start_retry start_info = win32process.STARTUPINFO() # we need to wrap the command line as it can be modified
# by the function
command_line = cmd_line # Actually create the process
dw_creation_flags = 0
if create_new_console:
dw_creation_flags = win32con.CREATE_NEW_CONSOLE
try:
(h_process, _, dw_process_id, _) = win32process.CreateProcess(
None, # module name
command_line, # command line
None, # Process handle not inheritable.
None, # Thread handle not inheritable.
0, # Set handle inheritance to FALSE.
dw_creation_flags, # Creation flags.
None, # Use parent's environment block.
work_dir, # If None - use parent's starting directory.
start_info) # STARTUPINFO structure.
except Exception as exc:
# if it failed for some reason
message = ('Could not create the process "%s"\n'
'Error returned by CreateProcess: %s') % (cmd_line, str(exc))
raise AppStartError(message) self.process = dw_process_id if self.backend.name == 'win32':
self.__warn_incorrect_bitness() def app_idle():
"""Return true when the application is ready to start"""
result = win32event.WaitForInputIdle(
h_process, int(timeout * 1000)) # wait completed successfully
if result == 0:
return True # the wait returned because it timed out
if result == win32con.WAIT_TIMEOUT:
return False return bool(self.windows()) # Wait until the application is ready after starting it
if wait_for_idle and not app_idle():
warnings.warn('Application is not loaded correctly (WaitForInputIdle failed)', RuntimeWarning) self.actions.log("Started " + cmd_line + " application.") return self

相关参数:

  • cmd_line: 是包含路径的启动应用程序的命令以及启动参数
  • timeout: 启动程序的超时时钟设置,默认为5s
  • create_new_console: 创建新的控制台,默认不创建
  • wait_for_idle: 是否等待到程序的Idle状态
  • work_dir: 指定工作目录
2.1.1代码设计

2.1.2参考代码
# -*- coding:utf-8 -*-

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

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-01-18
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Windows GUI自动化测试-2-pywinauto 启动PC端应用程序(详细教程)
''' # 3.导入模块 from pywinauto.application import Application
# 启动记事本
app = Application(backend="uia").start("notepad.exe")
2.1.3运行代码

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

2.运行代码后电脑端的动作(启动记事本)。如下图所示:

2.2启动电脑安装的应用程序

宏哥这里以大家熟悉的微信为例,属性-查看快捷方式,如下图所示:

2.1.1代码设计

2.1.2参考代码
# -*- coding:utf-8 -*-

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

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-01-18
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Windows GUI自动化测试-2-pywinauto 启动PC端应用程序(详细教程)
''' # 3.导入模块 from pywinauto.application import Application
# 启动微信
app = Application(backend="uia").start(r"D:\WeChat\WeChat.exe")
2.1.3运行代码

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

2.运行代码后电脑端的动作(启动微信)。如下图所示:

3.小结

今天主要分享和讲解了电脑(PC端)系统自带的应用程序,如:记事本、计算器等等,以及电脑(PC端)系统安装的应用程序,如QQ、微信等等。如何启动以及启动的几种方法,非常简单。

好了,时间不早了今天就分享到这里,感谢你耐心地阅读!

PC端自动化测试实战教程-2-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. centos8网络配置问题

    由于RHEL8与centos8基本一样,所以以下方法同样适用于RHEL8 在centos8上进行网络配置时,出现以下问题: 意思是无法找到network.service 出现错误的原因是centos8 ...

  2. Codeforces 319B Psychos in a Line 题解 [ 绿 ] [ 单调栈 ] [ 动态规划 ] [ adhoc ]

    Psychos in a Line:很好的单调栈优化 dp 题! 观察 我们先观察,一个精神病人会一直杀到什么时候.显然,会杀到右边第一个比他大的精神病人那里,然后他就杀不动了. 因此我们可以从右往左 ...

  3. 【忍者算法】从入环点到相遇点:深入理解环形链表 II|LeetCode第142题 环形链表 II

    [忍者算法]从入环点到相遇点:深入理解环形链表 II|LeetCode第142题 问题升级:不止要找环,还要找入环点 在上一题中,我们讨论了如何判断链表是否有环.现在让我们更进一步:如果确定链表中有环 ...

  4. [BZOJ3600] 没有人的算术 题解

    妙不可言!妙绝人寰! 单点修,区间查,包是线段树的.考虑如何比较两节点大小. 考虑二叉搜索树,我们只要再给每个节点附一个权值,就可以比较了! 注意力相当惊人的注意到,假如给每个点一个区间 \([l_x ...

  5. java推送企业微信消息

    <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcl ...

  6. Mybatis之Select Count(*)的获取 返回int 的值

    本文将介绍,SSM中mybatis 框架如何获取Select Count(*)返回int 的值.1. Service 代码: public boolean queryByunitclass(Strin ...

  7. Coordinate Spaces

    Coordinate Spaces 本主题包含以下部分: 根空间 用户空间 像素空间 任何VisionPro图像支持一系列坐标空间,以提供一个数值框架来表达特定特征的位置.最有用的空间是根空间,它将点 ...

  8. Windows 提权-RunAs

    本文通过 Google 翻译 RunAs – Windows Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充. 导航 0 前言 ...

  9. Oracle客户端中文显示问号乱码问题

    Oracle显示中文显示??乱码 问题如下图 解决方法 打开Oracle客户端,新建一个SQL Window 输入select userenv('language') from dual 复制搜索到的 ...

  10. rust学习笔记(8)

    cargo cargo是一个用来帮助控制项目开发的工具 cargo.toml 这是一个用来管理项目的文件 首先是[package]部分 [package] name = "foo" ...