Python 编程快速上手 第十八章 用 GUI 自动化控制键盘和鼠标
前言
这一章节讲述了如何实现 GUI 自动化,首先讲了一些处理异常状况的方法,然后是关于 GUI 自动化的内容,主要有三个部分:
- 控制鼠标
- 图像识别
- 控制键盘
下面引用一段话:
请将 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 自动化控制键盘和鼠标的更多相关文章
- Python 编程快速上手 第十四章 处理 CSV 文件和 JSON 数据
前言 这一章分为两个部分,处理 CSV 格式的数据和处理 JSON 格式个数据. 处理 CSV 理解 csv csv 的每一行代表了电子表格中的每一行,每个逗号分开两个单元格csv 的内容全部为文本, ...
- Python 编程快速上手 第十五章 保持时间,计划任务和启动程序
前言 这一章节的主要内容是: 处理时间类型的数据(使用python 的两个模块: time 和 datetime 来处理) 创建多个线程 (使用 threading 模块来创建多个线程) 进行多个进程 ...
- python经典书记必读:Python编程快速上手 让繁琐工作自动化
所属网站分类: 资源下载 > python电子书 作者:熊猫烧香 链接:http://www.pythonheidong.com/blog/article/69/ 来源:python黑洞网,专注 ...
- 入门python:《Python编程快速上手让繁琐工作自动化》中英文PDF+代码
入门推荐学习<python编程快速上手>前6章是python的基础知识,通俗易懂地讲解基础,初学者容易犯错的地方,都会指出来.从第三章开始,每章都有一个实践项目,用来巩固前面所学的知识. ...
- Python编程快速上手-让繁琐工作自动化-第二章习题及其答案
Python编程快速上手-让繁琐工作自动化-第二章习题及其答案 1.布尔数据类型的两个值是什么?如何拼写? 答:True和False,使用大写的T和大写的F,其他字母是小写. 2.3个布尔操作符是什么 ...
- Python编程快速上手 让繁琐工作自动化 - 专业程序员的养成完整版PDF免费下载_百度云盘
Python编程快速上手 让繁琐工作自动化 - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:7qm4 有关本书 累计销售超过10万册 零基础编程者的不二之选 基于Python3编写 通用 ...
- 《Python编程快速上手 —让繁琐工作自动化》|百度网盘免费下载|Python自动化办公
Python编程快速上手—让繁琐工作自动化 提取码:u8vj 如今,人们面临的大多数任务都可以通过编写计算机软件来完成. Python 是一种解释型.面向对象.动态数据类型的高级程序设计语言.通过 P ...
- Python 编程快速上手 第八章总结
在下面函数中的()中,可为相对路径,也可为绝对路径. 获知当前目录,改变当前目录,查看当前目录 更改当前目录:os.getcwd() 改变当前目录:os.chdir() 查看当前目录:os.listd ...
- 《python编程快速上手》
第一部分 编程基础 @表达式 ** % // @ >>> int(3.4) 3 >>>round(3.555,2)3.56 @判断条件时:0和0.0和‘’都是Fal ...
随机推荐
- Android之电话拨号和短信
拨打电话号码,需要添加权限设置,在安装的应用程序信息中可以看到此权限信息Intent doSth=new Intent();//意图:你想做什么呢?doSth.setAction(Intent.ACT ...
- 转:网卡、光纤网卡、ISCSI卡有什么区别?
网卡.光纤网卡.ISCSI卡有什么区别? 感谢: http://www.it.com.cn/f/server/063/6/241650.htm 在讨论这个问题的时候,需要先说清楚一个问题:我们知道,在 ...
- qtquickcontrols2控件集(使用参考重构)
随着Qt的版本升级,其自带的controls控件库也不断升级,目前已经到了2.3的版本.本文通过重构并且解读Qt自带的gallery例程,说明新版本controls控件库的相关特性 来自 ...
- markdownpad2-注册码-2017-02-23
MarkdownPad2.5/2 注册码 User: Soar360@live.com 授权: GBPduHjWfJU1mZqcPM3BikjYKF6xKhlKIys3i1MU2eJHqWGImD ...
- Hacker
https://hackertarget.com/nikto-website-scanner/
- Python之Requests的高级用法
# 高级用法 本篇文档涵盖了Requests的一些更加高级的特性. ## 会话对象 会话对象让你能够跨请求保持某些参数.它也会在同一个Session实例发出的所有请求之间保持cookies. 会话对象 ...
- Asp.Net 之 js/jquery获取服务器端控件
由于ASP.NET网页运行后,服务器控件会随机生成客户端id,jquery获取时候不太好操作,总结有以下3种方法:服务器控件代码:<asp:TextBox ID="txtUserID& ...
- NLP related basic knowledge with deep learning methods
NLP related basic knowledge with deep learning methods 2017-06-22 First things first >>> ...
- Gym 100247A The Power of the Dark Side
https://vjudge.net/problem/Gym-100247A 题意: 每个绝地武士有三个能力值a,b,c,两个武士决斗时谁有两个值大于对方谁就是胜者(a和a比,b和b比,c和c比,所有 ...
- PHP 冒泡排序(Bubble Sort)
冒泡排序指的是依次比较相邻的两个数,然后根据大小做出排序,直至最后两位数.因为在排序的 过程中总是小数放前面,大数放后面,和气泡上升有点类似,所以又称作冒泡排序. 下面通过一个实例看一下如何实现冒泡排 ...