前言

这一章节讲述了如何实现 GUI 自动化,首先讲了一些处理异常状况的方法,然后是关于 GUI 自动化的内容,主要有三个部分:

  1. 控制鼠标
  2. 图像识别
  3. 控制键盘

下面引用一段话:

请将 GUI 自动化看成对一个机械臂编程。你可以对机械臂编程,让它敲键盘或移动鼠标。对于涉及许多无脑点击或填表的任务。这种技术特别有用。

处理异常的办法

方法一:通过注销关闭所有程序:

Windows/Linux:Ctrl+Alt+Del
Mac OS:cmd+Shift+Option+Q

方法二:设置 pyautogui 的暂停

格式:pyautogui.PAUSE = 1.5
功能:将该变量设置为要暂停的秒数,在每次进行完函数调用之后暂停这段秒数的时间

方法三:pyautogui 自动防故障功能:

格式:pyautogui. FAILSAFE = True
功能:将鼠标移到屏幕的左上角,将触发pyautogui.FailSafeException异常。
禁用:可以让 pyautogui. FAILSAFE = False, 禁止使用这项功能。

控制鼠标

预备知识:

  • 屏幕的坐标表示法。
  • 可通过 pyautogui.size() 返回计算机的屏幕分辨率。
  • PyAutoGUI 函数中,有一个 duirantion 关键字,可以指定为函数的可选参数,表示其进行动作的时间。

移动鼠标

格式:

绝对位置:pyautogui.moveTo(x, y)
相对于目前的位置:pyautogui.moveRel(x, y)

其他:

获得鼠标绝对位置:格式:pyautogui.position()

点击鼠标

格式:

pyautogui.click(x, y, button ='left')

功能:

使用 button 的参数模拟鼠标点击 (x,y) 处,button 参数可为 'left','middle' 和 'right', 是一个可选值,默认为左键。

其他:

  • 按下鼠标按键:pyautogui.mouseDown()
  • 松开鼠标按键:pyautogui.mouseUp()
  • 双击鼠标左键:pyautogui.doubleClick()
  • 双击鼠标右键:pyautogui.rightClick()
  • 双击鼠标中键:pyautogui.middleClick()

拖动鼠标

格式:

绝对坐标拖动:pyautogui.dragTo(x, y)
相对当前坐标拖动:pyautogui.dragRel(x, y)

功能:

进行拖动,(另外作者建议在 Mac OS 上,最好添加 duration 参数)

滚动鼠标

格式:

scroll(200)

功能:

在相对的状态下,传递正数向上滚动,传递负数向下滚动。

图像识别

处理屏幕

获得屏幕快照:

格式:im = pyautogui.screenshot()
功能:返回一个整个屏幕的 Pillow Image 对象。

分析屏幕快照:

格式:pyautogui.pixelMatchesColor(50, 200, (130, 135, 144))
功能:接受一个坐标值和一个含有三个整数的 RGB 元组,然后进行判断颜色是否匹配,最后返回一个 True / False.

识别 & 定位

1. 获得一小块区域的屏幕快照

2. 使用 locateOnscreen() 这个方法进行定位

格式: pyautogui.locateOnscreen('submit.png')
功能:接受屏幕快照,返回屏幕上发现该图像的左上角坐标以及图像的宽度、高度。

控制键盘

键盘输入

格式:pyautogui.typewrite('Hello world!',0.25)

功能:在文本输入框内的焦点处,自动输入第一个参数的字符串,第二个参数每个字母之间停留的时间间隔,是可选参数。

其他

  • 键入给定键字符串:除了字符串,还可以传递键盘键字符串。如:'enter','up','tab' 等等。格式:pyautogui.typewrite(['left','right','enter'])
  • 按下和释放键盘:pyautogui.keyDown('shift'), pyautogui.keyUp('4')
  • 热键组合:pyautogui.hotkey(['ctrl','c']) 功能:可执行组合键

Python 编程快速上手 第十八章 用 GUI 自动化控制键盘和鼠标的更多相关文章

  1. Python 编程快速上手 第十四章 处理 CSV 文件和 JSON 数据

    前言 这一章分为两个部分,处理 CSV 格式的数据和处理 JSON 格式个数据. 处理 CSV 理解 csv csv 的每一行代表了电子表格中的每一行,每个逗号分开两个单元格csv 的内容全部为文本, ...

  2. Python 编程快速上手 第十五章 保持时间,计划任务和启动程序

    前言 这一章节的主要内容是: 处理时间类型的数据(使用python 的两个模块: time 和 datetime 来处理) 创建多个线程 (使用 threading 模块来创建多个线程) 进行多个进程 ...

  3. python经典书记必读:Python编程快速上手 让繁琐工作自动化

    所属网站分类: 资源下载 > python电子书 作者:熊猫烧香 链接:http://www.pythonheidong.com/blog/article/69/ 来源:python黑洞网,专注 ...

  4. 入门python:《Python编程快速上手让繁琐工作自动化》中英文PDF+代码

    入门推荐学习<python编程快速上手>前6章是python的基础知识,通俗易懂地讲解基础,初学者容易犯错的地方,都会指出来.从第三章开始,每章都有一个实践项目,用来巩固前面所学的知识. ...

  5. Python编程快速上手-让繁琐工作自动化-第二章习题及其答案

    Python编程快速上手-让繁琐工作自动化-第二章习题及其答案 1.布尔数据类型的两个值是什么?如何拼写? 答:True和False,使用大写的T和大写的F,其他字母是小写. 2.3个布尔操作符是什么 ...

  6. Python编程快速上手 让繁琐工作自动化 - 专业程序员的养成完整版PDF免费下载_百度云盘

    Python编程快速上手  让繁琐工作自动化 - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:7qm4 有关本书 累计销售超过10万册 零基础编程者的不二之选 基于Python3编写 通用 ...

  7. 《Python编程快速上手 —让繁琐工作自动化》|百度网盘免费下载|Python自动化办公

    Python编程快速上手—让繁琐工作自动化 提取码:u8vj 如今,人们面临的大多数任务都可以通过编写计算机软件来完成. Python 是一种解释型.面向对象.动态数据类型的高级程序设计语言.通过 P ...

  8. Python 编程快速上手 第八章总结

    在下面函数中的()中,可为相对路径,也可为绝对路径. 获知当前目录,改变当前目录,查看当前目录 更改当前目录:os.getcwd() 改变当前目录:os.chdir() 查看当前目录:os.listd ...

  9. 《python编程快速上手》

    第一部分 编程基础 @表达式 ** % // @ >>> int(3.4) 3 >>>round(3.555,2)3.56 @判断条件时:0和0.0和‘’都是Fal ...

随机推荐

  1. 值类型之间的相互转化,运算符,if条件判断,循环,函数

    值类型之间的相互转化 number | string | boolean 一.转换为boolean=>Boolean(a); var num = 10; var s = '123'; var b ...

  2. Restful framework【第四篇】视图组件

    基本使用 -view的封装过程有空可以看一下 -ViewSetMixin # ViewSetMixin 写在前面,先找ViewSetMixin的as_view方法 # 用了ViewSetMixin , ...

  3. Vue学习【第四篇】:Vue 之webpack打包工具的使用

    什么是webpack webpack是一个模块打包工具.用vue项目来举例:浏览器它是只认识js,不认识vue的.而我们写的代码后缀大多是.vue的,在每个.vue文件中都可能html.js.css甚 ...

  4. P4556 [Vani有约会]雨天的尾巴

    目录 思路 优化 过程中的问题/疑问 错误 代码 思路 每个节点维护一课线段树(当然是动态开点) 线段树的作用是统计这个节点有多少种粮食型号,以及最多的粮食型号 然后树上差分,u和v点 +1,lca( ...

  5. HDU 4391 Paint The Wall(分块的区间维护)

    题意:给出几个操作,把l-r赋值为z,询问l-r有几个z,其中z < INT_MAX 思路:因为z很大,所以很难直接用线段树去维护.这里可以使用分块来解决.我们可以让每个块用map去储存map[ ...

  6. Flyway Overview and Installation

    https://flywaydb.org/documentation/ Flyway is an open-source database migration tool. It strongly fa ...

  7. 【htop】Linux CentOS 6.5下安装htop进程管理工具

    一.Htop的使用简介 This is htop, an interactive process viewer for Linux. It is a text-mode application (fo ...

  8. linux网络流量实时监控工具之nload

    Install nload on a CentOS/RHEL/Red Hat/Fedora Linux First, turn on EPEL repo on a CentOS or RHEL bas ...

  9. How can I move a MySQL database from one server to another?

    My favorite way is to pipe a sqldump command to a sql command. You can do all databases or a specifi ...

  10. 题解——洛谷P2294 [HNOI2005]狡猾的商人(差分约束)

    裸的差分约束 dfs判断负环,如果有负环就false,否则就是true 注意有多组数据,数组要清空 #include <cstdio> #include <algorithm> ...