#pyautogui & pyperclip# 基于pyautogui & pyperclip的UI 自動
“ 文章所涉及內(nèi)容更多來自網(wǎng)絡(luò),在此聲明,并感謝知識的貢獻(xiàn)者!”
PyAutoGUI簡介:
pyautogui最方便的地方就是,你不需要去用代碼定位元素,你只需要用截圖就行,例如你要識別桌面上某個應(yīng)用,你只需要截圖這個應(yīng)用,然后通過這個截圖和當(dāng)前桌面對比即可找到圖標(biāo)的位置
pyautogui官網(wǎng):
https://pyautogui.readthedocs.io/en/latest/
pyautogui組件:
鼠標(biāo)、鍵盤、對話框、屏幕
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)系移動鼠標(biāo)
auto.moveTo(100,150)
#點擊鼠標(biāo)
auto.click()
#根據(jù)坐標(biāo)系點擊鼠標(biāo)
auto.click(100,150)
#尋找屏幕上的圖片并進(jìn)行點擊
auto.click('button.png')
#根據(jù)像素移動
auto.move(400,0)
#雙擊鼠標(biāo)
auto.doubleClick()
#點擊ESC鍵
auto.press('esc')
#按下shift鍵的同時,連按左鍵四下
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
—
自動防故障功能
# 默認(rèn)這項功能為True, 這項功能意味著:當(dāng)鼠標(biāo)的指針在屏幕的最左上方,程序會報錯;目的是為了防止程序無法停止
pyautogui.FAILSAFE =False
停頓功能
# 意味著所有pyautogui的指令都要暫停一秒;其他指令不會停頓;這樣做,可以防止鍵盤鼠標(biāo)操作太快;
pyautogui.PAUSE = 1
—
獲取屏幕分辨率
print(pyautogui.size()) # 返回所用顯示器的分辨率;輸出:Size(width=1920, height=1080)
width,height = pyautogui.size()
print(width,height) # 1920 1080
移動到指定位置
# 將鼠標(biāo)移動到指定的坐標(biāo);duration的作用是設(shè)置移動時間,所有的gui函數(shù)都有這個參數(shù),而且都是可選參數(shù);
# 向右移動100px,向下移動500px, 這個過程持續(xù) 1 秒鐘;
pyautogui.moveTo(100,300,duration=1)
獲取鼠標(biāo)位置
print(pyautogui.position()) # 得到當(dāng)前鼠標(biāo)位置;輸出:Point(x=200, y=800)
鼠標(biāo)單擊
# 點擊鼠標(biāo)
pyautogui.click(10,10) # 鼠標(biāo)點擊指定位置,默認(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)點擊與釋放
pyautogui.mouseDown() # 鼠標(biāo)按下
pyautogui.mouseUp() # 鼠標(biāo)釋放
鼠標(biāo)控制拖動事件
# 拖動到指定位置
# 將鼠標(biāo)拖動到指定的坐標(biāo);duration的作用是設(shè)置移動時間,所有的gui函數(shù)都有這個參數(shù),而且都是可選參數(shù)
pyautogui.dragTo(100,300,duration=1)
# 按方向拖動
# 向右拖動100px,向下拖動500px, 這個過程持續(xù) 1 秒鐘
pyautogui.dragRel(100,500,duration=4) # 第一個參數(shù)是左右移動像素值,第二個是上下
鼠標(biāo)滾輪
# 控制鼠標(biāo)滾動的函數(shù)是scroll(), 傳入一個整數(shù)的參數(shù),說明向上或向下滾動多少個單位;單位根據(jù)操作系統(tǒng)不同而不同
pyautogui.scroll(300) # 向下滾動300個單位;
—
鍵盤輸入函數(shù)
-pyautogui.keyDown() :模擬按鍵按下;
-pyautogui.keyUp() :模擬按鍵釋放;
-pyautogui.press() :# 就是調(diào)用keyDown() & keyUp(),模擬一次按鍵;
-pyautogui.typewrite('this',0.5) :第一參數(shù)是輸入內(nèi)容,第二個參數(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 提供了一個方法screenshot(),可以返回一個Pillow的image對象
im = pyautogui.screenshot() # 返回屏幕的截圖,是一個Pillow的image對象
im.getpixel((500, 500)) # 返回im對象上,(500,500)這一點像素的顏色,是一個RGB元組
pyautogui.pixelMatchesColor(500,500,(12,120,400)) # 是一個對比函數(shù),對比的是屏幕上(500,500)這一點像素的顏色,與所給的元素是否相同;
im = pyautogui.screenshot() # 返回屏幕的截圖,是一個Pillow的image對象
im.getpixel((500, 500)) # 返回im對象上,(500,500)這一點像素的顏色,是一個RGB元組
pyautogui.pixelMatchesColor(500,500,(12,120,400)) # 是一個對比函數(shù),對比的是屏幕上(500,500)這一點像素的顏色,與所給的元素是否相同;
—
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()
# 剪貼板上有非空字符串時返回字符串
import pyperclip
a = pyperclip.waitForPaste(5)
print(a)
# 剪貼板上有文本被更改時傳返回值
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
