#pyautogui & pyperclip# 基于pyautogui & pyperclip的UI 自動(dòng)
“ 文章所涉及內(nèi)容更多來自網(wǎng)絡(luò),在此聲明,并感謝知識(shí)的貢獻(xiàn)者!”
PyAutoGUI簡介:
pyautogui最方便的地方就是,你不需要去用代碼定位元素,你只需要用截圖就行,例如你要識(shí)別桌面上某個(gè)應(yīng)用,你只需要截圖這個(gè)應(yīng)用,然后通過這個(gè)截圖和當(dāng)前桌面對(duì)比即可找到圖標(biāo)的位置
pyautogui官網(wǎng):
https://pyautogui.readthedocs.io/en/latest/
pyautogui組件:
鼠標(biāo)、鍵盤、對(duì)話框、屏幕
Pyautogui教程:
import pyautogui as auto
import pyperclip
import time
#獲取屏幕大小
screen_width,screen_height=auto.size()
#獲取鼠標(biāo)位置(X,Y)
mouse_x,mouse_y=auto.position()
#根據(jù)坐標(biāo)系移動(dòng)鼠標(biāo)
auto.moveTo(100,150)
#點(diǎn)擊鼠標(biāo)
auto.click()
#根據(jù)坐標(biāo)系點(diǎn)擊鼠標(biāo)
auto.click(100,150)
#尋找屏幕上的圖片并進(jìn)行點(diǎn)擊
auto.click('button.png')
#根據(jù)像素移動(dòng)
auto.move(400,0)
#雙擊鼠標(biāo)
auto.doubleClick()
#點(diǎn)擊ESC鍵
auto.press('esc')
#按下shift鍵的同時(shí),連按左鍵四下
with auto.hold('shift'):
auto.press(['left','left','left','left'])
#按下快捷鍵
auto.hotkey('ctrl','c')
#彈出窗口
auto.alert('This is the message to display.')
#模擬鍵盤輸入
pyautogui.write('Hello world!', interval=0.25)
#按壓鼠標(biāo)拖拽
while distance > 0:
pyautogui.drag(distance, 0, duration=0.5) # move right
distance -= 5
pyautogui.drag(0, distance, duration=0.5) # move down
pyautogui.drag(-distance, 0, duration=0.5) # move left
distance -= 5
pyautogui.drag(0, -distance, duration=0.5) # move up
—
自動(dòng)防故障功能
# 默認(rèn)這項(xiàng)功能為True, 這項(xiàng)功能意味著:當(dāng)鼠標(biāo)的指針在屏幕的最左上方,程序會(huì)報(bào)錯(cuò);目的是為了防止程序無法停止
pyautogui.FAILSAFE =False
停頓功能
# 意味著所有pyautogui的指令都要暫停一秒;其他指令不會(huì)停頓;這樣做,可以防止鍵盤鼠標(biāo)操作太快;
pyautogui.PAUSE = 1
—
獲取屏幕分辨率
print(pyautogui.size()) # 返回所用顯示器的分辨率;輸出:Size(width=1920, height=1080)
width,height = pyautogui.size()
print(width,height) # 1920 1080
移動(dòng)到指定位置
# 將鼠標(biāo)移動(dòng)到指定的坐標(biāo);duration的作用是設(shè)置移動(dòng)時(shí)間,所有的gui函數(shù)都有這個(gè)參數(shù),而且都是可選參數(shù);
# 向右移動(dòng)100px,向下移動(dòng)500px, 這個(gè)過程持續(xù) 1 秒鐘;
pyautogui.moveTo(100,300,duration=1)
獲取鼠標(biāo)位置
print(pyautogui.position()) # 得到當(dāng)前鼠標(biāo)位置;輸出:Point(x=200, y=800)
鼠標(biāo)單擊
# 點(diǎn)擊鼠標(biāo)
pyautogui.click(10,10) # 鼠標(biāo)點(diǎn)擊指定位置,默認(rèn)左鍵
pyautogui.click(10,10,button='left') # 單擊左鍵
pyautogui.click(1000,300,button='right') # 單擊右鍵
pyautogui.click(1000,300,button='middle') # 單擊中間
鼠標(biāo)雙擊
pyautogui.doubleClick(10,10) # 指定位置,雙擊左鍵
pyautogui.rightClick(10,10) # 指定位置,雙擊右鍵
pyautogui.middleClick(10,10) # 指定位置,雙擊中鍵
鼠標(biāo)點(diǎn)擊與釋放
pyautogui.mouseDown() # 鼠標(biāo)按下
pyautogui.mouseUp() # 鼠標(biāo)釋放
鼠標(biāo)控制拖動(dòng)事件
# 拖動(dòng)到指定位置
# 將鼠標(biāo)拖動(dòng)到指定的坐標(biāo);duration的作用是設(shè)置移動(dòng)時(shí)間,所有的gui函數(shù)都有這個(gè)參數(shù),而且都是可選參數(shù)
pyautogui.dragTo(100,300,duration=1)
# 按方向拖動(dòng)
# 向右拖動(dòng)100px,向下拖動(dòng)500px, 這個(gè)過程持續(xù) 1 秒鐘
pyautogui.dragRel(100,500,duration=4) # 第一個(gè)參數(shù)是左右移動(dòng)像素值,第二個(gè)是上下
鼠標(biāo)滾輪
# 控制鼠標(biāo)滾動(dòng)的函數(shù)是scroll(), 傳入一個(gè)整數(shù)的參數(shù),說明向上或向下滾動(dòng)多少個(gè)單位;單位根據(jù)操作系統(tǒng)不同而不同
pyautogui.scroll(300) # 向下滾動(dòng)300個(gè)單位;
—
鍵盤輸入函數(shù)
-pyautogui.keyDown() :模擬按鍵按下;
-pyautogui.keyUp() :模擬按鍵釋放;
-pyautogui.press() :# 就是調(diào)用keyDown() & keyUp(),模擬一次按鍵;
-pyautogui.typewrite('this',0.5) :第一參數(shù)是輸入內(nèi)容,第二個(gè)參數(shù)是每個(gè)字符間的間隔時(shí)間;
-pyautogui.typewrite(['T','h','i','s']):typewrite 還可以傳入單字母的列表;
鍵盤事件
pyautogui.keyDown('shift') # 按下shift
pyautogui.press('4') # 按下 4
pyautogui.keyUp('shift') # 釋放 shift
緩慢輸出
pyautogui.typewrite('$*……%……¥', 0.5)
鍵盤特殊順序輸出
pyautogui.typewrite(['T','i','s','left','left','h',]) # 輸出:This
特殊按鍵說明
鍵盤字符串 說明
enter(或return 或 \n) 回車
esc ESC鍵
shiftleft, shiftright 左右SHIFT鍵
altleft, altright 左右ALT鍵
ctrlleft, ctrlright 左右CTRL鍵
tab (\t) TAB鍵
backspace, delete BACKSPACE 、DELETE鍵
pageup, pagedown PAGE UP 和 PAGE DOWN鍵
home, end HOME和 END鍵
up, down, left,right 箭頭鍵
f1, f2, f3…. f12 F1…….F12鍵
volumemute, volumedown,volumeup 聲音變大變小靜音(有些鍵盤沒有)
pause PAUSE鍵,暫停鍵
capslock CAPS LOCK 鍵
numlock NUM LOCK 鍵
scrolllock SCROLLLOCK鍵
insert INSERT鍵
printscreen PRINT SCREEN鍵
winleft, winright Win鍵(windows )
command command鍵(Mac OS X )
option option(Mac OS X)
快捷鍵
pyautogui.hotkey('ctrl','c')
—
獲取屏幕分辨率
print(pyautogui.size()) # 返回所用顯示器的分辨率;輸出:Size(width=1920, height=1080)
width,height = pyautogui.size()
print(width,height) # 1920 1080
屏幕截圖
pyautogui 提供了一個(gè)方法screenshot(),可以返回一個(gè)Pillow的image對(duì)象
im = pyautogui.screenshot() # 返回屏幕的截圖,是一個(gè)Pillow的image對(duì)象
im.getpixel((500, 500)) # 返回im對(duì)象上,(500,500)這一點(diǎn)像素的顏色,是一個(gè)RGB元組
pyautogui.pixelMatchesColor(500,500,(12,120,400)) # 是一個(gè)對(duì)比函數(shù),對(duì)比的是屏幕上(500,500)這一點(diǎn)像素的顏色,與所給的元素是否相同;
im = pyautogui.screenshot() # 返回屏幕的截圖,是一個(gè)Pillow的image對(duì)象
im.getpixel((500, 500)) # 返回im對(duì)象上,(500,500)這一點(diǎn)像素的顏色,是一個(gè)RGB元組
pyautogui.pixelMatchesColor(500,500,(12,120,400)) # 是一個(gè)對(duì)比函數(shù),對(duì)比的是屏幕上(500,500)這一點(diǎn)像素的顏色,與所給的元素是否相同;
—
pyautogui 網(wǎng)頁登錄
https://blog.csdn.net/m0_56238419/article/details/127697645
—
pyperclip簡介:
1. 可以復(fù)制剪貼板內(nèi)容
2. 可以向剪貼板寫入內(nèi)容
Pyperclip教程:
import pyperclip
# 將文本復(fù)制到剪貼板
pyperclip.copy('哈嘍')
# 從剪貼板粘貼文本
pyperclip.paste()
# 剪貼板上有非空字符串時(shí)返回字符串
import pyperclip
a = pyperclip.waitForPaste(5)
print(a)
# 剪貼板上有文本被更改時(shí)傳返回值
pyperclip.copy('original text')
a = pyperclip.waitForNewPaste(5)
print(a)
—
參考資料
https://www.jb51.net/article/209694.htm
https://zhuanlan.zhihu.com/p/410967443
https://www.jb51.net/article/251803.htm
https://www.cnblogs.com/yuruhao/p/14634401.html
http://www.yuyanba.com/default.aspx/did92862
https://blog.csdn.net/pythonuser1/article/details/125986205
https://blog.csdn.net/weixin_45122104/article/details/125957915
http://t.zoukankan.com/LM791605490-p-10245807.html
