2、按下键盘 press
press('enter', presses=1, interval=0.0)相当于鼠标操作的 click, 可以输入键盘上的按键,比如 shift 键,enter 键 。
所有的按键可以查看源码当中的 KEYBOARD_KEYS 或者 KEY_NAMES 。
参数:
◆ presses, 操作按键次数
◆ interval, 每次按键的间隔时间
所有按键列表:
文章插图
3、热键 hotkey
ui.hotkey('ctrl', 'shift', 'esc')4、keyUp, keyDown
这是press的分解动作,相当于鼠标的mouseUp和mouseDown 。
上面热键的操作方式可以分解成:
ui.keyDown('ctrl') # 按下 ctrlui.keyDown('shift') # 按下 shiftui.keyDown('esc') # 按下 escui.keyUp('esc') # 释放 ctrlui.keyUp('shift') # 释放 shiftui.keyUp('ctrl') # 释放 esc图像识别
坐标定位这种方式为通用性打下了基础,让pyautogui可以轻松做到跨平台 。
但是实际操作过程中很难清除的知道某个要操作的控件的确切位置,因为每次打开相同的页面都有可能是变动的 。
pyautogui 给出的解决方案非常简单粗暴,使用图像识别,返回在屏幕中的坐标位置,在通过坐标进行处理 。
1、locateCenterOnScreen
返回被识别图像的中心坐标 。
参数说明:
◆ 必传参数,图片路径;
◆ confidence, 识别精度,需要安装 opencv 才能使用;
◆ grayscale, 灰度级别,能够提升识别速度
locateCenterOnScreen('img/seven.png', confidence=0.7, grayscale=True)现阶段图像识别的结果并不理想,基于图像识别的使用还存在以下问题:
◆ 识别不到指定元素;
◆ 识别精度不够;
◆ 查找速度比较慢
◆ 需要用到重型的opencv库,或许可以尝试换用其他库 。
◆ 需要提前准备被识别的图片,如果操作元素多,手动处理素材会怀疑人生 。
所以uiautogui适合的场景是跨平台的少量原生控件交互,如果要对原生应用控件大量操作,还是换用其他工具比较合适 。
基于图像识别的具体例子:
import timeimport pyautogui as uitime.sleep(3)seven = ui.locateCenterOnScreen('img/seven.png', confidence=0.7, grayscale=True)mult = ui.locateCenterOnScreen('img/multipy.png', confidence=0.7, grayscale=True)two = ui.locateCenterOnScreen('img/two.png', confidence=0.7, grayscale=True)equal = ui.locateCenterOnScreen('img/equal.png', confidence=0.7, grayscale=True)ui.click(*seven)ui.click(*mult)ui.click(*two)ui.click(*equal)效果:
文章插图
4、后期可以期待的
pyautogui现阶段最欠缺的是无法获取窗口 。
但是可以通过PyGetWindow等工具进行集成 。
你可以通过官网roadmap和常见问答查看今后的发展路径 。
本文由柠檬班雨泽老师原创,转载需注明出处!
【Gui桌面应用测试,没有比这更简单上手的工具了】
推荐阅读
- 图文教程 部署hyper-V实现桌面虚拟化的步骤
- 应用身份应用分身淘宝可以用怎么弄 什么手机支持淘宝应用分身
- 我的远程桌面 MSTSC
- 1 人工智能的研究及应用领域
- 如何使用 HTTP Headers 来保护你的 Web 应用
- 苹果中国又有大动作:iOS游戏上架应用商店需要许可证
- 如何用PyQt编写桌面程序,创建并打开播放列表?
- 修改WINDOWS远程桌面的连接端口
- 有史以来25个最伟大的Java应用程序
- 桌面运维常用命令