测试进阶之路:pywinauto助你打开pc端自动化之门!

前言

我们柠檬班的小可爱,在学完我们柠檬班自动化的课程之后,就掌握了接口自动化,web自动化,app自动化,这些工作中常用的自动化技能,在工作足以够应对90%以上的自动化需求了。

不过近期也有部分小可爱在问PC端自动化怎么去做?

对这个技术比较好奇,使用python可以不可以实现PC客户端自动化测试?

答案当然是可以的,所以今天在这边专门整理了一遍文章,和大家一起聊聊如何使用python做PC端自动化!

环境安装

使用python实现来做PC端自动化,前提是先安装好python。

那么还需要用到一个第三方库:pywinauto。

在这边我们首先需要安装好这个库,安装命令如下:

使用说明

安装好了之后,关于使用说明大家可以参照官方文档上的说明。

如下图:

上述内容翻译如下:

就是说在我们安装好Pywinauto之后,首先要确定哪种可访问性技术(pywinauto的backend)可以用于我们的应用程序。

在windows上受支持的辅助功能技术有两种:

◆ Win32 API (backend="win32") 默认backend

◆ MS UI Automation (backend="uia")

如果您不能确定程序到底适用于那种backend,可以借助于GUI对象检查工具来做,常用的检查工具有Inspect.ex,Spy++ 等。

这个不做过多介绍,大家自行学习和下载,使用很简单,也非常便捷。

快速入门

在安装好环境之后,并且确定了应用程序适用的backend,那么接下来我们就可以使用Pywinauto这个模块来对应用程序进行自动化操作了。

01 连接到应用程序

这边用window自带的记事本程序作为案例,给大家做讲解。

连接应用程序,首先需要用到pywinauto.application.Application()来创建一个应用程序对象,然后再连接到应用程序。

有如下两种方法:

方式一:直接通过start方法打开操作的应用程序

方式二:连接已经打开应用程序,可以通过connect连接到指定的应用程序

运行以上代码,就会自动打开记事本记事本,如下

02 窗口选择

打开这个窗口之后,我们要操作该窗口的话,那么就的先选中这个窗口,关于窗口的选择有一下几种方式

03 控件操作

程序窗口中的每一块内容,都是一个控件,我们要对这个窗口的某一块内容进行操作,就需要选择到对应的控件。

◆ 获取所有控件

我们可以通过print_control_identifiers()这个方法,来获取这个窗口下的直接子控件,如下:

打印出来的结果如下:

上面打印出来的内容分别对应窗口种的以一下部分:

◆ 选择控件

关于控件选择的方法有好几种,最简单的方法如下:

◆ 内容输入

在上面选择到编辑窗口之后,我们就可以进行内容输入了

内容输入的方法:type_key()

运行结果如下:

04 键盘操作

输入完上述内容之后,接下来我们要修改编辑框中的内容

通过键盘完成以下操作:全选(ctrl+A) 复制(Ctrl+C) 粘贴(Ctrl+V) 回车(Enter) 粘贴(Ctrl+V)

◆ pywinauto.keyboard.send_key

pywinauto模拟操作键盘,需要使用到 pywinauto.keyboard.send_keys这个方法

运行结果如下:

◆ 常见的按键操作

##### 字母按键用按键小写字母表示

常用的一些按键

按键修饰符

更多的键盘操作大家可以参考官网文档

05 鼠标操作

pywinauto操作鼠标的所有方法都封装在pywinauto. mouse这个模块中,使用鼠标之前。

首先要导入mouse模块,mouse模块中包含了一系列的鼠标操作事件。

◆ pywinauto. mouse

鼠标移动:move方法

move(coords=(x轴坐标,y轴坐标))

缓慢移动鼠标案例

鼠标点击:click

说明

关于pywinauto模块的基本使用就该大家介绍到这里了,对pc端自动化感兴趣的同学可以往这个方向去深入学习。

本文由柠檬班木森老师原创,转载需注明出处!

让软件测试学习变得更简单!

最好用的HTTP客户端命令行工具

是什么?

扫码即可解锁解题视频

点一下在看再走吧

原文地址:https://www.cnblogs.com/nmb123/p/12187599.html

时间: 2024-08-02 15:08:51

测试进阶之路:pywinauto助你打开pc端自动化之门!的相关文章

手机打开PC端网址自动跳转到手机站代码

<script>function uaredirect(murl){ try { if(document.getElementById("bdmark") != null){ return; } var urlhash = window.location.hash; if (!urlhash.match("fromapp")){ if ((navigator.userAgent.match(/(iPhone|iPod|Android|ios|iPad|W

前端工程师的进阶之路

这篇文章收藏在笔记里面有几年了,原文作者无从考究了,侵删! 最近再翻出来看,依然觉得受益匪浅.这次整理分享出来,希望对大家有所启示. 背景 如果你是刚进入WEB前端研发领域,想试试这潭水有多深,看这篇文章吧: 如果你是做了两三年WEB产品前端研发,迷茫找不着提高之路,看这篇文章吧: 如果你是四五年的前端开发高手,没有难题能难得住你的寂寞高手,来看这篇文章吧. 前言 所谓的天才,只不过是比平常人更快的掌握技能.完成工作罢了:只要你找到了正确的方向,并辅以足够的时间,你一样能够踏上成功彼岸. 本文将

云架构师的进阶之路

原文:云架构师的进阶之路 一.架构的三个维度和六个层面 1.1.三大架构 在互联网时代,要做好一个合格的云架构师,需要熟悉三大架构. 第一个是IT架构,其实就是计算,网络,存储.这是云架构师的基本功,也是最传统的云架构师应该首先掌握的部分,良好设计的IT架构,可以降低CAPEX和OPEX,减轻运维的负担.数据中心,虚拟化,云平台,容器平台都属于IT架构的范畴. 第二个是应用架构,随着应用从传统应用向互联网应用转型,仅仅搞定资源层面的弹性还不够,常常会出现创建了大批机器,仍然撑不住高并发流量.因而

【SSH进阶之路】Hiberante3搭建开发环境+简单实例(二)

Hibernate是非常典型的持久层框架,持久化的思想是非常值得我们学习和研究的.这篇博文,我们主要以实例的形式学习Hibernate,不深究Hibernate的思想和原理,否则,一味追求,苦学思想和原理,到最后可能什么也学不会,从实践入手,熟能生巧,思想和原理自然而然领悟. 上篇博文:[SSH进阶之路]Hibernate基本原理,我们介绍了Hibernate的基本概念.Hibernate的核心以及Hibernate的执行原理,可以很好帮助我们认识Hibernate,再看这篇博客之前,请先回顾上

【WIN32进阶之路】:内存映射文件

第一章:源起  遇到一个问题,如果一个客户数据文件有2g大,客户要通过界面查询文件中的数据并用列表控件显示数据,要怎么处理这个文件才能让应用程序不会长时间无响应,客户感觉不到程序的卡顿? 第二章:解决之道 第一反应是用内存映射文件处理大文件,将文件分成数次映射至内存地址空间,避免一次性缓冲整个文件带来的界面长时间无响应,并将暂时不用的内存映射文件取消映射,客户是用列表控件进行显示,那就可以在首次加载的时候只加载第一页的内容就进行显示,之后在缓冲下一页的内容,当用户查看中间页面的内容时可以缓冲将当

测试开发之路--一个小小工程师的回首

关于背景 学生时代 高中:精力都放在魔兽3冰封王座上了,种族UD,全校第一.各个班级和周边网吧都挑战遍了.结果当然是不学无术的我高考失利,上了三流大学. 大一:因为酷爱电脑游戏报了计算机系.大一期间同样不思进取,打了一年的魔兽世界,60年代,全服第三工会中第一DPS. 大二:这一年幡然悔悟,痛定思痛,洗心革面,痛改前非,重新做人.花了一年时间把英语4级过了(底子太差...花了这么久). 大三:这一年学java,学校跟一个培训机构合作在学校办班.我跟一帮同学报名并组了个项目组,接接活,日子挺愉快.

MVC进阶之路:依赖注入(Di)和Ninject

MVC进阶之路:依赖注入(Di)和Ninject 0X1 什么是依赖注入 依赖注入(Dependency Injection),是这样一个过程:某客户类只依赖于服务类的一个接口,而不依赖于具体服务类,所以客户类只定义一个注入点.在程序运行过程中,客户类不直接实例化具体服务类实例,而是客户类的运行上下文环境或专门组件负责实例化服务类,然后将其注入到客户类中,保证客户类的正常运行. 图1 如图1所示,数据库操作类DataManager中依赖的IDataBase的接口,而不是以来IDataBase的具

【SSH进阶之路】Spring的AOP逐层深入——采用注解完成AOP(七)

上篇博文[SSH进阶之路]Spring的AOP逐层深入--AOP的基本原理(六),我们介绍了AOP的基本原理,以及5种通知的类型, AOP的两种配置方式:XML配置和Aspectj注解方式. 这篇我们使用注解方式来实现一个AOP,我们先看一下项目的目录. 我们采用的是JDK代理,所以首先将接口和实现类代码附上: package com.tgb.spring; public interface UserManager { public void addUser(String userName,St

Java进阶之路

Java进阶之路--从初级程序员到架构师,从小工到专家. 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到的问题.希望这篇文章会是你看到过的最全面最权威的回答. 一: 编程基础 不管是C还是C++,不管是Java还是PHP,想成为一名合格的程序员,基本的数据结构和算法基础还是要有的.下面几篇文章从思想到实现,为你梳理出常用的数据结构和经典算法. 1-1 常