一、前言

​ 我们柠檬班的小可爱,在学完我们柠檬班自动化的课程之后,就掌握了接口自动化,web自动化,app自动化,这些工作中常用的自动化技能,在工作足以够应对90%以上的自动化需求了。不过近期也有部分小可爱在问PC端自动化怎么去做?对这个技术比较好奇,使用python可以不可以实现PC客户端自动化测试?答案当然是可以的,所以今天在这边专门整理了一遍文章,和大家一起聊聊如何使用python做PC端自动化!

二、环境安装

​ 使用python实现来做PC端自动化,前提是先安装好python,那么还需要用到一个第三方库:pywinauto,在这边我们首先需要安装好这个库,安装命令如下:

pip install pywinauto

三、使用说明

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

上述内容翻译如下:

就是说在我们安装好Pywinauto之后,首先要确定哪种可访问性技术(pywinauto的backend)可以用于我们的应用程序,在windows上受支持的辅助功能技术有两种:

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

MS UI Automation (backend="uia")

​ 如果您不能确定程序到底适用于那种backend,可以借助于GUI对象检查工具来做,常用的检查工具有Inspect.ex,Spy++ 等,这个不做过多介绍,大家自行学习和下载,使用很简单,也非常便捷。

四、快速入门

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

1、连接到应用程序

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

连接应用程序,首先需要用到pywinauto.application.Application()来创建一个应用程序对象,然后再连接到应用程序,有如下两种方法:

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

from pywinauto import application

# 方式一:创建应用程序时可以,指定应用程序的合适的backend,start方法中指定启动的应用程序

app = application.Application(backend='uia').start('notepad.exe')

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

from pywinauto import application

# 方式二:查看要打开的程序进程号,通过process指定进程号连接

app = application.Application().connect(process=19035)

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

2、窗口选择

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

# 方式一 :不适用于窗口名为中文的

wind_1 = app.窗口名

# 方式二 :窗口名可以为中文

wind_2 = app["窗口名"]

# 案例使用:选择上面打开的计算器程序窗口

wind_calc = app['无标题 - 记事本']

3、控件操作

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

获取所有控件

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

app['无标题 - 记事本'].print_control_identifiers()

打印出来的结果如下:

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

选择控件

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

# 选择控件的方法

wind_calc = app["窗口名"]["控件名"]

# 案例操作:选择编辑窗口

edit = app['无标题 - 记事本']['Edit']

内容输入

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

内容输入的方法:type_key()

# 在编辑栏种输入内容

edit.type_keys("柠檬班")

edit.type_keys("python自动化")

edit.type_keys("musen")

运行结果如下:

4、键盘操作

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

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

pywinauto.keyboard.send_key

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

# 导入模块

from pywinauto.keyboard import send_keys

# 全选(ctrl+A)

send_keys("^a")

# 复制(ctrl+C)

send_keys("^c")

# 粘贴(ctrl+V)

send_keys("^v")

# 回车键

send_keys("{VK_RETURN}")

# 粘贴(ctrl+V)

send_keys("^v")

运行结果如下:

常见的按键操作

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

常用的一些按键

ESC键:VK_ESCAPE

回车键:VK_RETURN

TAB键:VK_TAB

Shift键:VK_SHIFT

Ctrl键:VK_CONTROL

Alt键:VK_MENU

按键修饰符

# 对于一些常用的按键,可以通过修饰符来表示,使用的时候比较方便

'+': {VK_SHIFT}

'^': {VK_CONTROL}

'%': {VK_MENU} Alt键

# 上面:全选(ctrl+A) 复制(ctrl+C) 粘贴(ctrl+V)就使用的是修饰符^来代表ctrl

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

5、鼠标操作

pywinauto操作鼠标的所有方法都封装在pywinauto. mouse这个模块中,使用鼠标之前,首先要导入mouse模块,mouse模块中包含了一系列的鼠标操作事件

pywinauto. mouse

鼠标移动:move方法

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

缓慢移动鼠标案例

for i in range(10):

x = 10 * i

y = 10 * i

time.sleep(0.5)

# 移动鼠标

mouse.move(coords=(x, y))

鼠标点击:click

# button指定左击还是右击,coords指定鼠标点击的位置

# 3.1、鼠标单击

# 指定位置,鼠标左击

mouse.click(button='left', coords=(40, 40))

# 指定位置 鼠标右击

# mouse.click(button='right', coords=(100, 200))

# 3.2 鼠标双击

mouse.double_click(button='left', coords=(140, 40))

# 4 按下鼠标:press

# 将属性移动到(140,40)坐标处按下

mouse.press(button='left', coords=(140, 40))

# 5 释放鼠标:repleace

# 将鼠标移动到(300,40)坐标处释放,

mouse.release(button='left', coords=(300, 40))

# 6、右键单击指定坐标

mouse.right_click(coords=(400, 400))

# 7、鼠标中键单击指定坐标(很少用的到)

mouse.wheel_click(coords=(400, 400))

# 8 滚动鼠标

# coords:指定鼠标的坐标位置。

# wheel_dist指定鼠标滚轮滑动的次数,正数往上,负数往下。

mouse.scroll(coords=(1200,300),wheel_dist=-3)

五、说明

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

用Python进行实时计算——PyFlink快速入门

Flink 1.9.0及更高版本支持Python,也就是PyFlink. 在最新版本的Flink 1.10中,PyFlink支持Python用户定义的函数,使您能够在Table API和SQL中注册和 ...

python视频教程:十分钟快速入门python

想要学习python这门语言,却始终找不到一个全面的Python视频教程,倘若你是真心想学好一门语言,小编建议你亲自动手实践的.下面来看看入门python的学习教程. Python的语言特性 Pyth ...

Python网络爬虫实战(一)快速入门

本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行. 我们编写网络爬虫最主要 ...

python网络爬虫实战之快速入门

本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行. 我们编写网络爬虫最主要 ...

【python】pycharm常用配置快速入门。

俗话说,工欲善其事必先利其器.当我们想从事一门新的语言的时候,最重要的是熟悉其常用的编辑器的配置.刚好这两天在学习python,网上看到一篇比较好的文章,转载过来自己学习一下.感谢:https://s ...

IdentityServer4 中文文档 -13- (快速入门)切换到混合流并添加 API 访问

IdentityServer4 中文文档 -13- (快速入门)切换到混合流并添加 API 访问 原文:http://docs.identityserver.io/en/release/quickst ...

saltstack自动化运维快速入门

saltstack自动化运维快速入门 关于saltstack 这个软件是干啥的 我这里就不介绍了 只是简单的说下是干啥的 网上的说法是 它是func的强化版本+ puppet的精简版 关于puppet ...

【待考察】Appium使用技巧,助你快速入门移动端自动化!

Appium使用技巧,助你快速入门移动端自动化! 原创: 柠檬班superman 柠檬班软件测试 1月4日 关注并置顶[柠檬班]的小哥哥小姐姐 “猪”年行大运 说说最近研究移动端的自动化 移动端的自动 ...

Python/WSGI 应用快速入门--转

http://uwsgi-docs-cn.readthedocs.io/zh_CN/latest/WSGIquickstart.html 这个快速入门指南将会向你展示如何部署简单的 WSGI 应用和普 ...

随机推荐

相克军_Oracle体系_随堂笔记011-事物

数据库主要实现的功能无非是以下三点: ①数据的一致性, ②数据的安全, ③数据的优化.   事物主要影响数据的一致性. 1.事务的基本概念    一组DML语句    insert.delete.up ...

poj 1114 完全背包 dp

如果可以每个物品拿多件,则从小到大遍历,否则从大到小遍历. G - Piggy-Bank Time Limit:1000MS     Memory Limit:32768KB     64bit IO ...

linux安装php遇到的问题

第一个问题:configure: error: libjpeg.(a|so) not found 很多人都纳闷儿了,我都安装了的,为什么就找不到呢?找不到其实就应试想到它的搜索位置里面是没有的,要不然 ...

mysql触发器之姓名转姓名拼音

人员表people 字段:id,peopleNumber,name,namePinyin,sex,birthday,nation. namePinyin不用填写,根据name自动生成. wordlib ...

cf666 C. Codeword 组合数学

题解: 首先暴力很显然 f[i][j]表示到第i个位置,串匹配到j 这样每次是n^2的 我们假设每个位置匹配的第一个位置 然后从这个到上一个位置一定不能等于这个串的值 ans=simga{i,C(i- ...

【Android】Android 代码判断是否获取ROOT权限(二)

[Android]Android 代码判断是否获取ROOT权限 方法比较简单,直接粘贴代码 /** * 判断当前手机是否有ROOT权限 * @return */ public boolean isRo ...

【读书笔记】iOS-加速计与陀螺仪

一,数据的“滤波” 直接从加速度计获得的原始数据,往往不能直接使用,而是需要去除一些干扰数据,这个过程称为“滤波”.“滤波”一词来源于无线电技术中对无线电信号的处理过程.事实上从数学角度而言它们是一样 ...

Springboot打包war

pom: 1.war 2.org.springframewor ...

vue2.0 父子组件数据传递prop

vue的一个核心概念就是组件,而组件实例的作用域是孤立的,所以组件之间是不能直接引用其他组件的数据的.极端点举例来说,就是可以在同一个项目中,每一个组件内都可以定义相同名称的数据. data () { ...

python制作客户端软件_python 实现 PC 客户端自动化快速入门:pywinauto !相关推荐

  1. python制作查询软件_python 制作本地应用搜索工具

    一.准备工作 请确保已经安装tkinter.pyperclip.threading 二.预览 1.启动 这是程序启动的主界面. 2.运行 搜索之后的界面. 3.结果 选择应用,右击鼠标复制它的下载链接 ...

  2. python制作词典软件_Python爬虫之二:自制简易词典

    运行平台: Windows Python版本: Python3.6 IDE: PyCharm 其他工具:Chrome浏览器 作为一个程序员,会经常查阅一些技术文档和技术网站,很多都是英文的,遇到不认识 ...

  3. python制作手机软件_python可以写APP吗(python能做手机软件吗)

    原博文 2020-09-22 20:15 − 一枚程序媛程序媛2 人赞同了该文章用Python操作手机APP的项目,例如抖音.闲鱼之类的,看完后发现这些项目无一例外需要部署ADB环境.至于什么是ADB ...

  4. Python制作小软件——4. 利用PyInstaller打包成exe文件

    在前面:Python制作小软件--3. 利用PyQt5实现界面中的功能,介绍完了Python中如何呼唤出我们的界面后 最后最重要的就是将我们做好的东西,全部打包成一个.exe可执行文件.这里我们使用的 ...

  5. Python制作小软件——1. 安装并使用PyQt5进行界面设计

    最近想学习利用Python进行GUI的设计,网上找了很多教程与方法,用的最多的是使用PyQt+Python就进行开发,同时利用PyQt做出来的界面也是相对而言较为方便且比较美观. 所以自己在闲暇之余, ...

  6. python制作编程软件的方法_python代码能做成软件吗

    我们首先还是使用pip进行安装: pip install PyInstaller 安装完成后,直接打开命令行,输入pyinstaller,如果显示如下界面,说明安装成功. 然后就可以进行我们小程序的封 ...

  7. python制作二级菜单_python之tkinter使用-二级菜单

    # 菜单功能说明:二级菜单 import tkinter as tk from tkinter import messagebox root = tk.Tk() root.title('菜单选择') ...

  8. 用 Python制作解压缩软件,其实特简单

    大家好,如何利用python制作一个解压缩软件,Python实现解压缩的重要模块就是--zipfile,其次是os,喜欢记得收藏.关注.点赞. 完整代码.技术交流文末获取 安装zipfile模块 首先 ...

  9. python制作电脑软件_利用PYTHON制作桌面版爬虫软件(二)

    今天继续新的专题.主要讲解[利用PYTHON制作桌面版爬虫软件]下的如何实现界面功能(一).该讲主要包括以下三个内容:掌握如何编写主函数,运行界面. 了解pywin32模块. 如何用python识别Q ...

最新文章

  1. Android 4.0屏蔽式多点触摸
  2. Alpha 冲刺报告(10/10)
  3. android圆形菜单
  4. 模态对话框阻塞主线程的话不影响其他线程操作主线程控件(不阻塞)
  5. pcl里面使用KdTree来搜索
  6. 转 html中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
  7. 玩数据必备Python库:Numpy使用详解
  8. 未能找到文件“\bin\roslyn\csc.exe”
  9. 小米路由 php 服务器,小米路由器在后台不停访问小米服务器发送设备信息,继续分析发现不止如此,还......
  10. arduino lora通讯_ESP8266 LoRa网关第一步:SPI总线
  11. 随手记_unbuntu从命令行进入图形界面
  12. JAVA常用的快捷键
  13. OFDM学习笔记(四)(信道估计简介)
  14. 坐标系的旋转与欧拉角
  15. 第五章 社会存在发展的基础和基本结构
  16. 回首2017,展望2018
  17. package.json 文件详解
  18. 【Python】P2191 小Z的情书
  19. 活动现场大屏幕互动系统源码,包含3D签到投票抽奖等功能
  20. 断舍离---新生活方式指引

热门文章

  1. java 获取两个List集合的交集
  2. SpringBoot之支付宝企业账户转账到个人账户【最新证书版】
  3. Js判断是否有文件选中
  4. 家里用哪个打印机好? 这个没有统一答案
  5. 【GIS】Mapbox-json配置
  6. qiniu-js 上传七牛云服务
  7. spoon mysql教程_spoon新手入门教程
  8. TensorFlow 2 和 Keras 高级深度学习:6~10
  9. tp3富文本编辑器部署
  10. python open函数用法_Python使用open函数打开文件的常用模式