一、前言

我们柠檬班的小可爱,在学完我们柠檬班自动化的课程之后,就掌握了接口自动化,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 importapplication#方式一:创建应用程序时可以,指定应用程序的合适的backend,start方法中指定启动的应用程序

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

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

from pywinauto importapplication#方式二:查看要打开的程序进程号,通过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)

pywinauto.keyboard.send_key

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

#导入模块

from pywinauto.keyboard importsend_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. mouse

pywinauto操作鼠标,需要导入mouse模块,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端自动化感兴趣的同学可以往这个方向去深入学习。

ps:关于pc端自动化的视频教程可以私聊获取

原文:https://www.cnblogs.com/nmb-musen/p/11646741.html

python实现电脑程序自动化_python基于pywinauto实现PC客户端自动化相关推荐

  1. python基于pywinauto实现PC端自动化

    原文来自:https://www.cnblogs.com/xp1315458571/p/13892205.html 一. pywinauto安装和启动 安装: pip install pywinaut ...

  2. WinAppDriver做PC客户端自动化

    WinAppDriver做PC客户端自动化 1.WinAppDriver介绍 我们平时网页自动化用到的技术一般是使用selenium,selenium在网页端功能十分强大,基本你能想到的操作都能做到, ...

  3. python制作客户端软件_python 实现 PC 客户端自动化快速入门:pywinauto !

    一.前言 ​ 我们柠檬班的小可爱,在学完我们柠檬班自动化的课程之后,就掌握了接口自动化,web自动化,app自动化,这些工作中常用的自动化技能,在工作足以够应对90%以上的自动化需求了.不过近期也有部 ...

  4. python windows桌面程序开发_Python 零基础入门

    Photo by Chris Ried on Unsplash Python 是一种易于学习又功能强大的编程语言.它提供了高效的高级数据结构,还有简单有效的面向对象编程.Python 优雅的语法和动态 ...

  5. python 百度ai批量识别_Python基于百度AI的文字识别的示例

    Python基于百度AI的文字识别的示例 使用百度AI的文字识别库,做出的调用示例,其中filePath是图片的路径,可以自行传入一张带有文字的图片,进行识别. 下载baidu-aip这个库,可以直接 ...

  6. python微信小程序抢购_Python实现微信小程序支付功能!Python确实强的一批!

    正文 由于最近自己在做小程序的支付,就在这里简单介绍一下讲一下用python做小程序支付这个流程.当然在进行开发之前还是建议读一下具体的流程,清楚支付的过程. 1.支付交互流程 2.获取openid( ...

  7. python网络爬虫程序技术_Python网络爬虫程序技术-中国大学mooc-题库零氪

    Python网络爬虫程序技术 - 中国大学mooc 已完结  94 项目1 爬取学生信息 1.2 Flask Web网站随堂测验 1.import flask app=flask.Flask(__n ...

  8. python微信小程序爬虫_Python爬取微信小程序实战(通用)

    背景介绍 最近遇到一个需求,大致就是要获取某个小程序上的数据.心想小程序本质上就是移动端加壳的浏览器,所以想到用Python去获取数据.在网上学习了一下如何实现后,记录一下我的实现过程以及所踩过的小坑 ...

  9. python模拟购物车购物过程_Python基于数列实现购物车程序过程详解

    要求 1.启动程序后让用户输入余额,并打印商品列表 2.用户通过输入编号购买商品 3.用户选择商品购买后,根据余额判断成功或者失败,给出对应提示 4.可以随时退出,退出后打印账号余额以及购买的商品列表 ...

最新文章

  1. http 里面的post和get区别
  2. 【TarsosDSP】TarsosDSP 简介 ( TarsosDSP 功能 | 相关链接 | 源码和相关资源收集 | TarsosDSP 示例应用 | TarsosDSP 源码路径解析 )
  3. HashMap 实现原理
  4. sparkstreaming 读取mysql_SparkStreaming读取Kafka的两种方式
  5. 机器学习算法_机器学习之EM算法和概率图模型
  6. C++ 动态开辟二维数组的的方法
  7. 程序员Mac常用软件之效率工具
  8. linux下删除编译安装的软件,Linux 中卸载编译安装的软件
  9. Cadence工具系列介绍
  10. Java链表——插入和删除
  11. 打开ps显示计算机内存不足怎么办,ps内存不足怎么办【解决方法】
  12. pdf转换成jpg python_Python 将pdf转成图片
  13. 硕士论文——页眉页脚设置
  14. [译] Dweb: Beaker--去中心化的浏览器 (中英)
  15. 2 月份看了 17 本书,我只推荐这 8 本!
  16. Supermap机器学习功能实操
  17. 基于OpenStack的云测试平台
  18. ERP中配额生单的简单了解
  19. VR制作中必须踩的坑365之037(oculus2、UE4、UE5、VR记录一年的踩坑之旅)Maya / ZBrush / Substance Painter倒来倒去
  20. android简单记事本

热门文章

  1. Codeforces ----- Kefa and Dishes [状压dp]
  2. 【POJ2411】Mondriaan's Dream
  3. c#中params关键字应用
  4. ubuntu sun-jdk
  5. SQL SERVER 2008的GEOMETRY类型
  6. Google发转码工具 可将安卓程序转至iOS
  7. Java的getperiod_Java中的Period getYears()方法
  8. Scrapy框架(持久化,去重,深度控制,cookie)
  9. 如何连接oracle 12c可插拔数据库
  10. Java学习笔记之方法