前言

这一章节讲述了如何实现 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. 更改 centos 7的源为 阿里源

    阿里源的网址在这里:http://mirrors.aliyun.com/repo/ 一.进入源文件存放目录 cd /etc/yum.repos.d 二.安装基本源: 1.如果要备份原来的源文件 sud ...

  2. Codeforces 37D Lesson Timetable - 组合数学 - 动态规划

    题目传送门 神奇的门I 神奇的门II 题目大意 有$n$组学生要上课2次课,有$m$个教室,编号为$1$到$m$.要确定有多少种不同的安排上课的教室的方案(每组学生都是本质不同的),使得它们满足: 每 ...

  3. 封装QML能访问的类

    一.常用宏 1.信号与槽 C++类中的信号与槽都可以在QML中访问 2.C++类的成员函数,Q_INVOKABLE Q_INVOKABLE void function(); 3.C++类的枚举,Q_E ...

  4. sha0dow0socks

    秋水的一键安装脚本 #!/usr/bin/env bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bi ...

  5. hihoCoder week3 KMP算法

    题目链接 https://hihocoder.com/contest/hiho3/problems kmp算法 #include <bits/stdc++.h> using namespa ...

  6. 关于C#引用ExceptionPolicy.HandleException(ex, "LogAndReplace", out exceptionToReplace);

    http://www.cnblogs.com/Terrylee/archive/2006/07/03/enterprise_library2_1.html 要使用ExceptionPolicy.Han ...

  7. Unity3D学习笔记(三十四):Shader着色器(1)

    一.GPU:图形处理器,Graphics Processing Unit 显卡的处理器就是图形处理器.与CPU类似.   GPU和CPU的区别? 1.CPU主要是为了串行指令设计,GPU则是为了大规模 ...

  8. Git 提交的正确姿势:Commit message 编写指南

    http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html Git 每次提交代码,都要写 Commit message( ...

  9. 【BZOJ】1831: [AHOI2008]逆序对

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1831 考虑$-1$的位置上填写的数字一定是不降的. 令${f[i][j]}$表示$DP$到 ...

  10. Educational Codeforces Round 23 C. Really Big Numbers 暴力

    C. Really Big Numbers time limit per test 1 second memory limit per test 256 megabytes input standar ...