说起自动化,首先想起的是一个设想:把嘴用起来,让声音来让电脑工作,而不是键盘和鼠标。在这一点上,手机比电脑都要智能些。
pyautogui是一套实现自动化的库,可惜termux上判断为字符界面,并不能正确运行。
安装
自动化 pip install pyautogui
图像处理 pip install opoencv-python
excel处理 pip install xlrd
复制粘贴 pip install pyperclip
截图 pip install Pillow
鼠标
import pyautogui
print("当前鼠标位置:", pyautogui.position())
print("当前屏幕分辨率:", pyautogui.size())
print("判断坐标是否在屏幕内:", pyautogui.onScreen(10,10))
print("鼠标移动到:", pyautogui.moveTo(300,300,duration=0.3))
print("相对移动:", pyautogui.moveRel(100,100,duration=5))
print("相对移动:", pyautogui.move(100,0))
print("左键拖动:", pyautogui.dragTo(10,10,button='left'))
print("当前位置单击:", pyautogui.click())
pyautiogui.doubleClick(10,10) # 双击左键
pyautogui.rightClick(10,10) # 双击右键
pyautogui.middleClick(10,10) # 双击中键
pyautogui.mouseDown() # 鼠标按下
pyautogui.mouseUp() # 鼠标释放
# pyautogui.click(x=moveTox,y=moveToy,clicks=num_of_clicks,interval=secs_clicks,button='left'
# interval 单击之间等待的秒数
# doubleClick() 执行鼠标双击
# right/left/middle/Click() 右击/左击/中间单击
# mouseDown()/mouseUp() 鼠标按下/释放,可进行鼠标拖动
pyautogui.scroll(10) # 向上滚动10格
pyautogui.scroll(-10) # 向下滚动10格
pyautogui.scroll(10,x=10,y=100) # 将鼠标移到x,y,向上滚动10格
键盘
import pyautogui
pyautogui.write("hello",interval=0.25) # 输出hello,每个字符后延迟0.25秒
pyautogui.press('enter') # 按下并释放enter
pyautogui.press(['left','left','left'])
pyautogui.press('left', presses=3) # 每次按下之间加延迟
# 先按住shift, 再按三次left,再释放shift
with pyautogui.hold('shift'):
pyautogui.press(['left','left','left'])
pyautogui.hotkey('ctrl', 'shift', 'esc') # 先按下ctrl,shift,esc,再一一释放
消息框
import pyautogui
pyautogui.alert(text='内容',title='提示框',button='OK') # 显示一个带有文本和确定按钮的简单消息框,用户点击返回button的文本
pyautogui.confirm(text='内容',title='询问框',buttons=['OK','Cancel']) #显示带有确定和取消按钮的消息框,可以自定义按钮的数量和文本,点击返回按钮的文本
pyautogui.prompt(text='内容',title='输入框',default='123') # 显示文本输入和确定/取消按钮,确定返回输入的文本,单击取消返回None
pyautogui.password(text='内容',title='密码框',default='123',mask='*') # 显示文本输入和确认/取消按钮,键入的字符显示为*,返回输入文本,取消返回None
图形
import pyautogui
img1 = pyautogui.screenshot('1.png') # 全屏
print(img1)
img2=pyautogui.screenshot('2.png',region=(0,0,300,400)) # 区域
print(img2)
# 如果所在屏幕中(x,y)点的实际RGB三色与函数中的RGB一样就会返回True,否则返回False
# tolerance参数可以指定红、绿、蓝3种颜色误差范围
pyautogui.pixelMatchesColor(100, 200, (255, 255, 255))
pyautogui.pixelMatchesColor(100, 200, (255, 255, 245), tolerance=10)
# 获得文件图片在现在的屏幕上面的坐标,返回的是一个元组(top, left, width, height)
# 如果截图没找到,pyautogui.locateOnScreen()函数返回None
a = pyautogui.locateOnScreen(r'C:\Users\ZDH\Desktop\PY\region_screenshot.png')
print(a) # 打印结果为Box(left=0, top=0, width=300, height=400)
x, y = pyautogui.center(a) # 获得文件图片在现在的屏幕上面的中心坐标
print(x, y) # 打印结果为150 200
x, y = pyautogui.locateCenterOnScreen(r'C:\Users\ZDH\Desktop\PY\region_screenshot.png') # 这步与上面的四行代码作用一样
print(x, y) # 打印结果为150 200
#匹配图片的函数
# pyautogui.locateOnScreen('picture.jpg')
# pyautogui.locateAllOnScreen('picture.jpg')#匹配多处图片
示例
# 案例获取鼠标的位置,方便复制我们定位的鼠标坐标点到代码中
import pyautogui
import time
import PIL
from PIL import Image
# 获取鼠标位置
def get_mouse_positon():
print('开始获取鼠标位置')
for i in range(10):
# Get and print the mouse coordinates.
x, y = pyautogui.position()
positionStr = '鼠标坐标点(X,Y)为:{},{}'.format(str(x).rjust(4), str(y).rjust(4))
pix = pyautogui.screenshot().getpixel((x, y)) # 获取鼠标所在屏幕点的RGB颜色
positionStr += ' RGB:(' + str(pix[0]).rjust(3) + ',' + str(pix[1]).rjust(3) + ',' + str(pix[2]).rjust(3) + ')'
print(positionStr)
time.sleep(0.5) # 停顿时间
if __name__ == "__main__":
get_mouse_positon()
import pyautogui
img1 = pyautogui.screenshot('1.png') # 全屏
print(img1)
img2=pyautogui.screenshot('2.png',region=(0,0,300,400)) # 区域
print(img2)