python客户端自动化测试滚轮移到最上面_Python自动化测试——python 实现 PC 客户端自动化快速入门:pywinauto !...

python 实现 PC 客户端自动化:pywinauto 快速上手!

一、前言

我们华测的小可爱,在学完我们华测自动化的课程之后,就掌握了接口自动化,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()

打印出来的结果如下:

Control Identifiers:

Notepad - '无标题 - 记事本'(L708, T199, R1669, B922)

['无标题 - 记事本','无标题 - 记事本Notepad','Notepad']

chLd_window(title="无标题 - 记事本",class_name="Notepad")

|

|Edit - ''(L717, T262, R1660, B884)

|['无标题 - 记事本Edit','Edit']

|child_window(class_name="Edit")

|

|StatusBar - '' (L717, T262, R1660, B913)

|['StatusBar 弟 1 行, 弟 一 列','StatusBar', 'StatusBar100%', 'StatusBar

Windows (CRLF)', '无标题 - 记事本StatusBar']

| child_window(class_name="msctls_statusbar32")

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

选择控件

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

# 选择控件的方法

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

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

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

内容输入

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

内容输入的方法:type_key()

# 在编辑栏种输入内容

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 端自动化感兴趣的同学可以往这个方向去深入学习。

推荐好文:

有任何疑问,欢迎加入软件测试交流q群:313782132(加群时,请备注)。小编QQ:692511253

原文链接:https://blog.csdn.net/weixin_50271247/article/details/108474918

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值