一、背景

我们经常遇到需要进行大量重复操作的时候,比如网页上填表,对 web 版本 OA 进行操作,自动化测试或者给新系统首次添加数据等。这些操作的特点往往是:数据同构,大多是已经有了的结构化数据;操作比较呆板,都是同一个流程的点击、输入;数据量大,极大消耗操作人精力。

那么能不能自动化呢?

二、自动化的方案

如果你在 web 上进行操作, Python 的 Selenium 可以满足要求。如果需要对 GUI 界面进行操作,你恐怕得试验下“按键精灵”能不能满足要求。对新系统添加初始数据,SQL 导出导入是最高效的方式,不过可能需要进行一些较复杂的处理。

曾经多次遇到要求一条条手动输入旧数据的系统升级活动。

但以上都存在一些问题, Selenium 比较复杂,按键精灵功能上不太完善, SQL 需要一定的知识基础。那么这里推荐一个更好的解决方案:PyAutoGUI

其实 PyAutoGUI 最主要好处就是比较简单,应急使用的话可以很快构建一个可用的自动化操作脚本。毕竟,数据处理任务本来就比较急迫,没有时间使用复杂知识,来构建一个完善的脚本。

三、思路和知识点

现在哈来说一下基本思路与相关知识点

  • PyAutoGUI 就是模拟键盘、鼠标在界面上进行操作。

  • 这里只使用它的 click 功能来模拟鼠标点击。

  • 为了获取需要点击的位置,设计了一个鼠标坐标获取的程序。

  • ASCII 码的输入比较简单。再解决汉字输入问题,就使得系统基本可用了。

本文以在 web 界面批量新增数据记录为例,讲解如何自动化操作。这个例子只是演示之用,非常简单,大家自行理解、迁移。

四、操作步骤

4.1 初识 PyAutoGUI

简单地说, PyAutoGUI 就是模拟键盘、鼠标在界面上进行操作的包。安装时直接使用如下语句:pip install pyautogui即可。

编写一个简单的测试程序:

import pyautogui as pagpag.PAUSE = 1.5
pag.click(63,191)

以上程序导入库,定义了每步骤的暂停时间 1.5 秒(用来留给操作时间),然后在屏幕左起 63 像素,上起 191 像素这个点上点击了鼠标。

4.2 坐标系

PyAutoGUI 默认的坐标系从屏幕左上角开始,x 轴向右增大,y 轴向下增大。所以显示器上每个点都有自己的位置。

引申一下,当知道界面上每个按钮的位置时,点击这些点,就是执行相应的操作了。

当然,这一切的前提是界面不变。大多数应用的界面、按钮位置不会变来变去。如果你有这方面需求,可以参考下 locateOnScreen() 函数。这个函数根据你提供的图片,在屏幕上找到像素匹配的地方。这样就不怕按钮动来动去了。

为了获取屏幕的坐标系,写了一个简单的程序,用来获取鼠标在屏幕上的坐标。大家可以自行下载运行。

import pyautogui as pag
import os try:while True:os.system('cls')a = '%4d,%4d'%pag.position()print(a)
except Exception as e:print(e)

运行以上程序,移动鼠标到各个按钮上,就可以看到相应的坐标。

4.3 点击

PyAutoGUI 的点击很简单:

pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button='left', duration=0.0)

其中xy是坐标,clicks 是点击次数,interval 是点击间隔,button 指代三个鼠标按钮的哪一个,duiation 是点击之间的间隔。

写如下程序,来进行任务、时间和新建按钮之间的跳转。

pag.click(63,191)
pag.click(328,191)
pag.click(384,461)
pag.click(374,191)

4.4 输入

输入 ASCII 字符和键盘击键、热键分别如下:

  • 输入 ASCII 字符串是typewrite(message='test message.',interval=0.5)

  • 击键是press('esc')

  • 按下是KeyDown('ctrl')

  • 松开是KeyUp('ctrl')

  • 组合键是hotkey('ctrl','v')。

至于汉字,稍微复杂点。

4.5 汉字输入

涉及汉字,无法用 ASCII 方案解决,需要导入包 pyperclip ,这个包封装了系统剪贴板,大家知道怎么回事了吧。

import pyperclip #以下读入内容,就是把内容存入剪贴板。
pyperclip.copy('需要输入的汉字')
#以下输出内容,就是粘贴。
pag.hotkey('ctrl','v')

其实就是用 pyperclip 模拟拷贝,用热键 Ctrl+v 粘贴,实现了非 ASCII 字符的输入。

4.6 集成起来

下面,把整个程序集成起来看:

import pyautogui as pag
import pyperclippag.PAUSE = 1.5
pag.FAILSAFE = Trueto = ['测试任务1','测试任务2','测试任务3','测试任务4','测试任务5',\'测试任务6','测试任务7','测试任务8','测试任务9','测试任务10']for t in to:pag.click(63,191)pyperclip.copy(t)pag.hotkey('ctrl','v')pag.click(328,191)pag.click(384,461)pag.click(374,191)

以上程序,根据 to 列表内容,把操作分解为点击和粘贴,实现了自动化操作的目的。大部分编码都很好理解,能跟鼠标操作一一对应起来。可能存在难度的是数据源的问题,总不能把所有数据都写入程序吧?

五、数据源

相较于复杂的现实数据源,最好的方式就是把数据转成 csv 文件。这样许多 Excel 都可以另存成这个文件,其本身又是基于文本的,可读可写,比较方便。其他诸如 SQL 数据库、 XML 数据也可以导出转换为 csv 文件。

假设现在有了 csv 格式数据源 data.csv ,需要这样操作。

to = []with open('data.csv')as f:lines = f.readlines()for line in lines:to.append(tuple(line.split(',')))

以上代码比较简单,把 csv 中存成的数据存储到 to 这个数组里,每行数据都是一个元组,调用的时候,如4.6部分代码所示,使用 for 循环加上元组下标即可。

六、总结

本文使用 PyAutoGUI 包,对各种鼠标点击、输入之类的机械重复操作进行自动执行,可大幅提高工作效率。这里只使用了 click 功能和 pyperclip 包的 copy 功能。主要是为了简化编程,让大家在紧张和繁琐的操作中,快速编写一个自动化执行的小脚本。

-END-

本文由公众号读者投稿,欢迎各位童鞋向公众号投稿,点击下面图片了解详情!

文末给大家推荐一本《Excel×Python智能高效办公》。本书主要讲解用Excel与Python结合进行办公操作,以轻松对话的形式引出章节的重点、难点和疑点,主要内容包括Python的特征、Python的安装、Python与编程基础、操作Excel工作表、汇总数据、格式设置与打印、绘制图表、PDF的转换与加工等。本书写作风格诙谐幽默、趣味十足,打破读者对编程类图书的刻板印象。同时,本书附赠配套程序代码和语音视频,让读者运行无压力,帮助读者更高效地学习。

赠书规则点赞本文 给本文留言,然后集赞数排名前 3 + 名优质留言的朋友,可获得包邮赠书。

开奖时间:5 月 27 日 20:00

注意:没有意义的留言将不会被选中,无需发送截图给我,开奖时以我这本截图为准,如若中奖我会回复留言,中奖者24小时内,必须添加小助理微信(sshs321)领取,逾期不候!

解放双手|利用 PyAutoGUI 快速构建自动化操作脚本相关推荐

  1. 释放双手-PyAutoGUI 快速构建自动化操作脚本

  2. Python的pyautogui模块,自动化操作的强大工具

    在Python当中,不仅代码简单,而且有着非常丰富的模块,pyautogui就可以称之为自动化操作的"神器". 为什么说是神器呢?百度的搜索的解释如下: PyAutoGUI是一个纯 ...

  3. pyautogui自动化操作脚本

    之前针对加密视频播放编写了一个自动答题的脚本(使用易语言 大漠插件所编写的) 还有商户自动话术回复的(也是易语言+大漠插件) 还有使用autojs所编写的一个针对安卓端钉钉的自动签到 还有一个某宝领喵 ...

  4. 利用eyoucms快速构建网站

                                利用eyoucms快速构建网站 1.最近公司需要做一个简单的宣传网站,并且需要前后台!网站地址:http://47.104.177.254 2. ...

  5. 解放双手,基于github travis-ci docker自动化部署java项目

    前言 最近在写一些小玩具的时候,一次次的测试,打包,部署流程太麻烦了,正好代码都放在github上,于是就是打算用travis-ci来进行持续集成 解放双手. 实现思路 dockerfile + do ...

  6. pyautogui typewrite_解放双手:Pyautogui帮你work

    今天介绍一个很有用的python库--Pyautogui,它可以通过屏幕的xy坐标系统来确定目标位置,进而控制鼠标和键盘发送虚拟的点击和输入任务.这对于你要完成机械重复枯燥的电脑操作来说非常地方便. ...

  7. c++浏览器自动化操作_精:C# 利用Selenium实现浏览器自动化操作

    概述 Selenium是一款免费的分布式的自动化测试工具,支持多种开发语言,无论是C. java.ruby.python.或是C# ,你都可以通过selenium完成自动化测试.本文以一个简单的小例子 ...

  8. 利用CentOS快速构建自己的发行版(3)

    三.打包生成ISO文件发布 # cd /ltos # declare -x discinfo=`head -1 .discinfo` # createrepo -u "media://$di ...

  9. linux_linux自动化换源等优化美化自动化操作脚本/oh my zsh安装/卸载与删除/vim/vi卸载与更新异常/linux发行版本/内核版本查看

    文章目录 references 信息检查和预备工作 查看发行版和内核版本号相关主题命令 查看自己的发行版以及版本号 内核号(optional) 发行版相关主题(optional) 内核版本相关主题(o ...

最新文章

  1. 取代人类医生?AI给你做的诊断你敢信吗
  2. matlab raw函数,用matlab处理Raw格式的图像文件的方法
  3. SELECT LAST_INSERT_ID() 的使用和注意事项
  4. 【Python】多线程
  5. Vue学习(watch、computed、生命周期、filter)- 学习笔记
  6. Avalonia跨平台入门第四篇之Popup在uos下问题
  7. starter_您是否尝试过MicroProfile Starter?
  8. Python3 爬虫学习笔记 C17【爬虫框架 pyspider — 基本使用】
  9. 白雪 | NLP加持知识图谱在金融事件挖掘中的应用
  10. SQL Server provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错
  11. liger UI tree DATA添加值
  12. php常用技术与thinkphp5,thinkPHP5框架路由常用知识点汇总
  13. oracle declare语法_基于oracle数据库存储过程的创建及调用
  14. 次氯酸:利用先天反应
  15. R语言数据分析案例(1)
  16. ie11安装程序无法继续 因为你的计算机,ie11无法安装解决方法详解
  17. Ios5(三)屏幕的旋转和大小设置;
  18. 香港服务器需要如何来维护呢?
  19. 腾讯视频怎么下载_QQ视频如何下载到本地保存
  20. 【新智元峰会】德国AI教皇盛赞中国人工智能,25位AI领袖强势打造中国新智极...

热门文章

  1. 计算机模拟合理用药,计算机模拟地塞米松在内耳药物动力学与内耳显微结构三维重建的实验研究...
  2. 【伟人事迹】计算机科学家们的传奇人生
  3. 湖北省计算机专业基础知识,2012年湖北省中职对口高考计算机应用基础知识点...
  4. 微信强制性诱导分享php,什么样的微信诱导分享算违规操作?
  5. MYSQL的and和or优先级比较
  6. ERP系统对制造业的影响有哪些?4个好处提升企业性能
  7. python通过手机号(批量)解析出归属地、运营商、邮编、区号
  8. OpenCv——5鼠标绘制矩形
  9. CG-光栅图形学消隐算法-学习笔记
  10. 选项类 oracle ebs,oracle—EBS - 采购功能点操作手册