20.1:安装pyautogui模块
pip install --user pyautogui
20.2:在macOS上设置无障碍应用程序
20.3:走对路
20.3.1暂停和自动妨故障装置
20.3.2:通过注销关闭所有程序
20.4:控制鼠标指针
import pyautogui
print(pyautogui.size())
size()函数:返回两个整数的元组,包含屏幕的宽度和高度的像素数
20.4.1:移动鼠标指针
import pyautogui
pyautogui.moveTo(100, 100, duration=0.25)
pyautogui.move(100, 0, duration=0.25)
moveTo()函数:将鼠标立即移动到屏幕指定位置,x、y坐标分别是参数1和参数2,参数duration是可选的指定了移动到目标所需的秒数
move()函数:将鼠标移动相对当前的位置参数和上诉一样
20.4.2:获取鼠标指针位置
import pyautogui
print(pyautogui.position())
position()函数:可以确定鼠标指针当前位置,它将返回x、y坐标的元组
20.5:控制鼠标交互
20.5.1:单击鼠标
import pyautogui
pyautogui.click(10, 5, button='left')
click()函数:鼠标单击事件,默认情况下使用鼠标左键,单击鼠标指针当前位置。也可以传入x、y作为参数1和参数2指定单击位置,想指定鼠标按键就加入button关键字参数值分别为left、middle、right
20.5.2:拖动鼠标
import pyautogui, time
time.sleep(5)
pyautogui.click()
distance = 300
change = 20
while distance > 0:
pyautogui.drag(distance, 0, duration=0.2)
distance = distance - change
pyautogui.drag(0, distance, duration=0.2)
pyautogui.drag(-distance, 0, duration=0.2)
distance = distance - change
pyautogui.drag(0, -distance, duration=0.2)
dragTo()和drag()函数:将鼠标指针拖动到一个新位置,第一个是拖动到相应的位置,第二个是拖动到与当前相应的位置
20.5.3:滚动鼠标
import pyautogui
pyautogui.scroll(200)
scroll()函数:提供一个整型参数,说明向上或向下滚动多少单位
20.6:规划鼠标运动
import pyautogui
pyautogui.mouseInfo()
mouseInfo()函数:需要在交互环境中调用,会启动一个程序,程序提供了关于鼠标和鼠标所在位置的信息
20.7:处理屏幕
20.7.1:获取屏幕快照
import pyautogui
pyautogui.screenshot()
screenshot()函数:会把当前屏幕截取下来,会返回一个Image对象
20.7.2:分析屏幕快照
import pyautogui
print(pyautogui.pixel(0, 0))
print(pyautogui.pixelMatchesColor(20, 200, (130, 135, 144)))
pixel()函数:获取屏幕上某一点的像素的rgb颜色值。
pixelMatchesColor()函数:判断屏幕上给定的坐标像素与给定的颜色是否匹配。
20.8:图像识别
import pyautogui
print(pyautogui.locateOnScreen('submit.png'))
print(pyautogui.locateAllOnScreen('submit.png'))
locateOnScreen()函数:判断图像是否出现在屏幕上,返回图像所在处的坐标,找不到则异常
locateAllOnScreen()函数:判断图像是否出现在屏幕上(多处),返回一个Generator对象传递给list()返回图像位置的元组
20.9:获取窗口信息
20.9.1:获取活动窗口
import pyautogui
fw = pyautogui.getActiveWindow()
print(fw.title)
print(fw.size)
print(fw.left)
print(fw.topleft)
print(fw.area)
getActiveWindow()函数获取活动窗口对象它具有的属性:
left、right、top、bottom:表示窗口边的坐标
topleft、topright、bottomleft、bottomright:表示窗口角的坐标
midleft、midright:表示窗口边中间的坐标
width、height:表示窗口的一个维度,一像素为单位
size:表示窗口的宽度与高度
area:表示窗口的面积
center:表示窗口的中心坐标
centerx、centery:表示窗口的中心x或y的坐标
box:表示窗口(左侧、顶部、宽度、高度)
title:表示窗口的标题文本
20.9.2:获取窗口的其他方法
getAllWindows():返回屏幕上所有可见窗口的Windows对象列表
getWindowsAt():返回所有包含点的可见窗口的Windows对象列表
getWindowsWithTitle():返回所有在标题中包含字符串的可见窗口的Windows对象列表
getActiveWindow():返回当前活动窗口的Windows对象
getAllTitles():返回所有可见窗口的字符串列表
20.9.3:操纵窗口
import pyautogui
fw = pyautogui.getActiveWindow()
fw.isMaximized
fw.isMinimized
fw.isActive
fw.maximize()
fw.restore()
fw.minimize()
fw.activate()
fw.close()
isMaximized:是否是最大化
isMinimized:是否是最小化
isActive:是否是活动窗口
maximize():最大化窗口
restore():还原到以前的大小和位置
minimize():最小化窗口
activate():指定为活动窗口
close():关闭一个窗口
20.10:控制键盘
20.10.1:通过键盘发送一个字符串
import pyautogui
pyautogui.click(100, 200)
pyautogui.write('hello world!', 0.25)
write()函数:将向窗口发送文本,第二个参数可选择传入,在每个字符之间添加时间暂停,默认立即输入完整的字符
20.10.2:键名
import pyautogui
pyautogui.click(100, 200)
pyautogui.write(['hello world!', 'left'], 0.25)
键盘按键字符串差不多就是单引号加键位名比如:'left'
20.10.3:按下和释放键盘按键
import pyautogui
pyautogui.click(100, 200)
pyautogui.keyDown('shift')
pyautogui.press('4')
pyautogui.keyUp('shift')
keyDown()函数:表示键盘按下
keyUp()函数:表示按键释放
press()函数:模拟完整的按键事件
20.10.4:快捷键组合
import pyautogui
pyautogui.hotkey('ctrl', 'c')
hotkey()函数:接收多个键字符串参数,按顺序按下,在按相反的顺序释放
20.11:设置GUI自动化脚本
import pyautogui
pyautogui.sleep(3)
pyautogui.countdown(10)
pyautogui.sleep()和time.sleep()作用相同
pyautogui.countdown():输入倒计时的数字,倒计时函数
20.12:复习pyautogui的函数
20.13:项目:自动填表程序
import pyautogui, time
formData = [{'***'}{'***'}{'***'}]
pyautogui.PAUSE = 0.5
print('is loaded')
for person in formData:
print('>>>s-SECOND *** <<<')
time.sleep(5)
print('Entering %s' % person['name'])
pyautogui.write(['\t', '\t'])
pyautogui.write(person['name'] + '\t')
pyautogui.write(person['fear'] + '\t')
if person['source'] == 'wand':
pyautogui.write(['down', '\t'], 0.5)
elif person['source'] == 'amulet':
pyautogui.write(['down','down', '\t'], 0.5)
elif person['source'] == 'crystal ball':
pyautogui.write(['down','down','down', '\t'], 0.5)
elif person['source'] == 'money':
pyautogui.write(['down', 'down','down','down','\t'], 0.5)
if person['robocop'] == 1:
pyautogui.write([' ', '\t'], 0.5)
elif person['robocop'] == 2:
pyautogui.write(['right', '\t'], 0.5)
elif person['robocop'] == 3:
pyautogui.write(['right', 'right', '\t'], 0.5)
elif person['robocop'] == 4:
pyautogui.write(['right', 'right', 'right', '\t'], 0.5)
elif person['robocop'] == 5:
pyautogui.write(['right', 'right', 'right', 'right', '\t'], 0.5)
pyautogui.write(person['comments'] + '\t')
time.sleep(0.5)
pyautogui.press('enter')
time.sleep(5)
pyautogui.click(submitAnotherLink[0], submitAnotherLink[1])
20.14:显示消息框
import pyautogui
pyautogui.alert('This is a message', 'Important')
pyautogui.confirm('Do you want to continue?')
pyautogui.prompt("what is your cat's name?")
pyautogui.password('What is the password?')
pyautogui.alert():显示文本,并有一个确定按钮
pyautogui.confirm():显示文本,并有确定和取消按钮,返回'Cancel'和'OK'
pyautogui.prompt():显示文本,并有一个文本字段供用户输入,以字符串返回
pyautogui.password():与prompt()相同,但会显示星号