桌面自动化测试

PyAutoGUI介绍

  • pyautogui是用来做GUI桌面应用自动化的Python包,功能类似于按键精灵:可以实现控制鼠标、键盘、消息框、截图、定位功能
  • pyautogui的特点:
    • 纯python实现,源码清晰可见
    • 跨平台,支持linux,windows,mac
    • 操作简单,会python就行
    • 需要特别注意的是:pyautogui不支持中文输入,但可以配合pyperclip模块进行复制粘贴
  • 官方文档

安装

windows安装pyautogui

pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple

mac安装pyautogui

pip install pyobjc-core
pip install pyobjc
pip install pyautogui

linux安装pyautogui

#sudo apt-get install scrot python3-tk python3-dev
pip install python3-xlib
pip install pyautogui

1. 鼠标操作

1.1 屏幕和鼠标位置

屏幕位置有X和Y直角坐标表示,X坐标从左侧的0开始,向右增加。与数学不同, Y坐标从顶部的0开始,向下增加。
±--------------------------+
| | Y increases
| | |
| 1920 x 1080 screen | |
| | V
| |
| |
±--------------------------+ 1919, 1079

  • 左下角的像素位于坐标(0,0)。如果屏幕的分辨率为1920*1080,则右下角的像素将为1919,1079(因为坐标始于0,而不是1)
  • 屏幕分辨率大小由给size()函数作为两个整数的元组返回。给position()函数范睢鼠标的光标的当前X和Y坐标
  • 在python交互模式下,运行如下代码:
import time
import pyautogui

print(pyautogui.size())  # 屏幕分辨率

try:
    while True:
        x, y = pyautogui.position()  # 返回鼠标的坐标
        # 打印当前鼠标位置坐标
        print(f'鼠标坐标:x={x}, y={y}')
        time.sleep(1)
# 捕获异常 KeyboardInterrupt:用户中断执行(通常是输入^C)
except KeyboardInterrupt:
    print('已退出')
  • 要检查XY坐标是否在屏幕上,请将它们(作为两个整数参数后者带有两个整数的单个元组/列表参数)传递给onScreen()参数,True如果在屏幕边界之内,则返回该函数False。
>>> pyautogui.onScreen(0, 0)
True
>>> pyautogui.onScreen(0, -1)
False

1.2 鼠标移动

改moveTo()函数会将鼠标光标移至你传递的X和Y整数坐标。例如:

import pyautogui

# 在每次PyAutoGUI调用(具体的操作)后就会有2秒的暂停
pyautogui.PAUSE = 2

pyautogui.moveTo(100, 200)  # moves mouse to X of 100, Y of 200.
pyautogui.rightClick()  # 鼠标原地右键单击

pyautogui.moveTo(800, 800)  # moves mouse to X of 800, Y of 800.
pyautogui.rightClick()  # 鼠标原地右键单击

通常,鼠标光标会立即移动到新坐标。如果您希望鼠标逐渐移动到新位置,请在移动所需的持续时间(以秒为单位)中传递第三个参数。例如:

import pyautogui

pyautogui.moveTo(100, 200)  # moves mouse to X of 100, Y of 200
pyautogui.rightClick()  # 鼠标原地右键单击

pyautogui.moveTo(800, 800, 2)  # moves mouse to X of 800, Y of 800 over 2 seconds
pyautogui.rightClick()  # 鼠标原地右键单击

如果要将鼠标光标相对于其当前位置(相对位置)移动几个像素,请使用给move()功能。此函数的参数类似于moveTo().例如:

import pyautogui

# 在每次PyAutoGUI调用(具体的操作)后就会有2秒的暂停
pyautogui.PAUSE = 2

pyautogui.moveTo(140*2, 80*2)  # moves mouse to X of 140*2, Y of 80*2.
pyautogui.rightClick()  # 鼠标原地右键单击

# 从当前位置移动鼠标
pyautogui.move(188*2, 155*2)       # move the mouse left 188*2, down 155*2 pixels.
pyautogui.rightClick()  # 鼠标原地右键单击

1.3 鼠标拖拽

pyautogui的dragTo()和drag()函数的参数与moveTo()和move()函数的参数相似。此外,他们还有一个button可以设置为left,的关键字middle,并且right在拖动时按住鼠标键不放。例如:

import pyautogui

# 在每次PyAutoGUI调用(具体的操作)后就会有2秒的暂停
pyautogui.PAUSE = 2

# button可以设为 left, middle和right
pyautogui.dragTo(35*2, 35*2, button='left')  # drag mouse to X of 35*2, Y of 35*2 while holding down left mouse button
pyautogui.drag(500, 0, 5)  # 按住鼠标左键,用5秒钟把鼠标相对于(35*2, 35*2)往右移动500

1.4 鼠标点击

1.5 鼠标滚动

1.6 保护措施

2. 键盘操作

2.1 write()函数

2.2 press(),keyDown()和keyUp()函数

2.3 hotkey()函数

2.4 KEYBOARD_KEYS

3. 信息框操作

3.1 alert()函数

3.2 confirm()函数

3.3 prompt()函数

3.4 password()函数

3.5 消息框方法汇总

4. 截图定位操作

4.1 screenshot()函数

4.2 定位功能:

4.2.1 locateOnScreen()函数

4.2.2 locateCenterOnScreen函数

4.4.3 提高定位精度

4.4.4 加速定位

  • 指定定位范围
  • 降低灰度

4.4.5 方法汇总

截图定位

5. 案例:自动写字表白

5.1 进程启动记事本

  • os.system启动程序默认阻塞,开启一个进程让程序阻塞,原来的进程继续运行测试代码

5.2 定位记事本和写字

5.3 其他操作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值