日常繁琐任务(Python)自动化指南

简介

本文的主要考虑GUI自动化,主要包括使用python控制键盘与鼠标。

浏览器自动化可以参考udemy课程的Section 13 - Web Scraping

Word,Excel,PDF自动化可以参考Section 14 - Excel, Word, and PDF Documents

Email自动化收发可以参考Section 15 - Email

安装

1
2
3
4
5
6
7
8
9
sudo pip3 install python3-xlib
sudo apt-get install scrot
sudo apt-get install python-tk
sudo apt-get install python3-dev
sudo pip3 install pyautogui

调试鼠标位置

1
pyautogui.displayMousePosition()

鼠标操作常用函数

1
2
3
4
5
6
7
8
9
10
pyautogui.size()
pyautogui.position()
pyautogui.moveTo(x,y,duration=1.5)
pyautogui.moveRel(x,y)
pyautogui.click()
pyautogui.doubleClick()
pyautogui.rightCLick()
pyautogui.middleClick()
pyautogui.dragTo()
pyautogui.dragRel()

键盘操作常用函数

1
2
3
4
5
pyautogui.typewrite('Hello world!',interval=0.2)
pyautogui.typewrite(['a','b','left','left','X','Y'],interval=1)
pyautogui.KEYBOARD_KEYS
pyautogui.press('f1')
pyautogui.hotkey('ctrl','o')

截图与图像识别

1
2
3
4
5
6
7
pyautogui.screenshot('~/dev/test.png')
#要求识别像素完全一致
#如果被部分遮挡就会无法识别
#我想如果利用SIFT特征识别来实现,说不定可以一定程度上克服这个缺点
pyautogui.locateOnScreen('~/dev/test/calc7key.png')
pyautogui.locateCenterOnScreen('~/dev/test/calc7key.png')

示例

一个简易示例,利用pyautogui自动操作游戏。
https://github.com/asweigart/sushigoroundbot

参考资料

[1] Automate the Boring Stuff with Python Programming

[2] 日常繁琐任务自动化指南

[3] PyAutoGUI 文档