PyAutoGUI圖形用戶界面自動化的超詳細教程
開始之前
在開始之前,要先安裝所需要的模塊 pyautogui, pyautogui 模塊可以向 Windows 發(fā)送虛擬按鍵和鼠標點擊。
pip install -i https://pypi.douban.com/simple pyautogui
查看屏幕大小
pyautogui.size()
可以獲得屏幕的寬和高的像素數(shù)(整數(shù))。
>>> pyautogui.size() Size(width=1920, height=1080) # 也可以直接將寬,高進行保存 x, y = pyautogui.size()
獲取當前鼠標的位置
函數(shù)返回當前位置 X,Y 坐標的元組,如果設(shè)置 x,y 的參數(shù),則會覆蓋返回結(jié)果。
>>> pyautogui.position(x=None, y=None) Point(x=1437, y=817)
檢查指定坐標是否在屏幕上
要檢查 X,Y 坐標是否在屏幕上,將它們(支持兩個整數(shù),列表,元組)傳遞給 onScreen()
函數(shù),如果它們在屏幕的邊界內(nèi),則返回 True ,否則返回 False 。
>>> pyautogui.size() (1920, 1080) >>> pyautogui.onScreen(1920, 1080) False >>> pyautogui.onScreen(1919, 1079) True
設(shè)置暫停時間
使用 pyautogui.PAUSE
變量設(shè)置要暫 停的秒數(shù)。如,在設(shè)置 pyautogui.PAUSE = 1
之后,每個 PyAutoGUI 函數(shù)調(diào)用 在執(zhí)行動作之后,都會等待一秒。
>>> pyautogui.PAUSE = 1
鼠標功能
移動鼠標
移動鼠標到指定位置。
pyautogui.moveTo(x=None, y=None, duration=0.0) # 移動鼠標到指定位置
pyautogui.move(xOffset=None, yOffset=None, duration=0.0) # 在PyAutoGUI 1.0,move 替換了 moveRel,但moveRel也可以使用
pyautogui.moveTo(200, 300, duration=0.5) # 移動到坐標(200,300) pyautogui.move(200, 300, duration=0.5) # 從當前鼠標位置向右移動 200 向下移動 300
主要參數(shù)參數(shù):
x/xOffset:X軸坐標,moveTo()
中取值0或正整數(shù)值,move()/moveRel()
中取值可以為負數(shù),代表以當前位置向左移動
y/yOffset:Y軸坐標,moveTo()
中取值0或正整數(shù)值,move()/moveRel()
中取值可以為負數(shù),代表以當前位置向上移動
duration:移動到指定坐標花費的時間,默認為0,代表立即完成,單位為s
鼠標點擊
使用 click()
完成鼠標點擊操作。
>>> pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button=PRIMARY, duration=0.0)
主要參數(shù):
x:X軸坐標,默認為 None,即當前X軸坐標
y:Y軸坐標,默認為 None,即當前Y軸坐標(注:X,Y 軸的坐標只能同時指定,不能只指定某一個)
clicks:鼠標的點擊次數(shù),默認為 1 次
interval:int 或浮點數(shù),表示每次單擊之間需要等待多少秒,默認值為0.0,表示單擊之間沒有暫停
button:可選 LEFT、MIDDLE、RIGHT、PRIMARY(左鍵)或 SECONDARY(右鍵)。它的默認值是 PRIMARY
duration:如果指定了 X,Y 的值,并且該坐標不是鼠標當前位置的話,那么 duration 參數(shù)就可以生效,它表示移動到指定坐標花費的時間,默認為 0,表示立即移動。
?? 其他點擊操作:
pyautogui.mouseDown() # 按下鼠標按鍵(左鍵) pyautogui.mouseUp() # 釋放鼠標按鍵(左鍵)
鼠標拖動
按住鼠標的某個鍵進行拖動。
pyautogui.dragTo(x=None, y=None, duration=0.0, button=PRIMARY) # 將鼠標拖動到指定位置 pyautogui.drag(xOffset=0, yOffset=0, duration=0.0, button=PRIMARY) # 將鼠標拖動到屏幕上相對于當前位置的一個點。
主要參數(shù):
x,y/xOffset,yOffset:x 和 y 指明鼠標事件發(fā)生的位置。如果為 None,則使用鼠標當前位置。如果是浮點值,則將其舍入。如果在屏幕邊界之外,則事件發(fā)生在屏幕邊緣。
duration:如果指定了 X,Y 的值,并且該坐標不是鼠標當前位置的話,那么 duration 參數(shù)就可以生效,它表示移動到指定坐標花費的時間,默認為 0,表示立即移動。
button:可選 LEFT、MIDDLE、RIGHT、PRIMARY(左鍵)或 SECONDARY(右鍵)。它的默認值是 PRIMARY
??示例:
鼠標滾動
垂直滾動,在不同平臺滾動的效果可能不一樣。
>>> pyautogui.scroll(100) # 向上滾動100 >>> pyautogui.scroll(-100) # 向下滾動100 >>> pyautogui.scroll(100, x=200, y=200) # 移動到200, 然后執(zhí)行滾動
水平滾動,(適用與 OS X 和 Linux 平臺上)。
>>> pyautogui.hscroll(100) # 向右滾動100 >>> pyautogui.hscroll(-100) # 向左滾動100
??示例:
屏幕功能
截屏功能
使用 screenshot()
函數(shù)來實現(xiàn)截屏功能。調(diào)用 screenshot()
將返回一個 Image 對象。傳入一個文件名字符串將把截圖保存到文件中,并將其作為一個 Image 對象返回。通過 region 關(guān)鍵字參數(shù)來捕獲指定區(qū)域,只需傳遞一個由 left, top, width, height 組成的元組(left,top為左上角坐標)。
>>> import pyautogui >>> pyautogui.screenshot() >>> pyautogui.screenshot(r'C:\Users\pc\Desktop\test.png') >>> pyautogui.screenshot(r'C:\Users\pc\Desktop\test.png', region=(300, 300, 500, 1000))
定位功能
如果不知道要點擊的內(nèi)容在屏幕上的確切坐標,就不能調(diào)用 moveTo()
和 click()
函數(shù)。但是,如果有按鈕的圖像,如下面這個圖片,那就可以調(diào)用 locateOnScreen('圖片路徑')
函數(shù)來獲取坐標。返回值是一個元組:(left, top, width, height)。這個元組可以傳遞給 center()
來獲得該區(qū)域中心的坐標(X,Y)。如果在屏幕上找不到圖像,locateOnScreen()
將引發(fā) ImageNotFoundException 異常。
>>> location = pyautogui.locateOnScreen('圖片路徑') >>> pyautogui.center(location)
還可以將 grayscale=True
傳遞給 locateOnScreen,以略微加速(大約 30%)。這降低了圖像和截圖的顏色飽和度,加快了定位速度,但可能會導(dǎo)致錯誤匹配。
消息框功能
PyAutoGUI 利用 PyMsgBox 中的消息框函數(shù)提供了一種跨平臺的純 Python 方法來顯示 javascript 樣式的消息框。
alert()函數(shù)
>>> pyautogui.alert(text='text', title='title', button='alert!') 'alert!'
顯示一個帶有文本的簡單消息框和一個 alert! 按鈕。單擊按鈕后返回 button 的值。
??示例:
confirm()函數(shù)
顯示帶有多個按鈕的消息框。按鈕的數(shù)量和文字可以自己設(shè)置。單擊按鈕返回該按鈕的文本。
>>> pyautogui.confirm(text='text', title='title', buttons=['再考慮一下', '卸載']) '卸載'
??示例:
prompt()函數(shù)
顯示一個包含 確認,取消 按鈕和文本輸入欄的消息框,用戶可以輸入指定內(nèi)容。當點擊確認按鈕后,返回輸入框中的值;若點擊取消,則返回 None 。
pyautogui.prompt(text='text', title='title', default='請輸入文本信息')
??示例:
password()函數(shù)
顯示一個包含 確認,取消 按鈕和文本輸入欄的消息框,輸入的字符顯示為"*"。如果點擊確認則返回輸入的文本;如果單擊“取消”,則為 None
。
pyautogui.password(text='text', title='title', default='密碼', mask='*')
??示例:
鍵盤控制功能
write()函數(shù)
write()
函數(shù)將在傳入的字符串中鍵入字符。若要在按下每個字符鍵之間添加延遲間隔,interval 參數(shù)可以設(shè)置每個按鍵之間添加延遲。
>>> pyautogui.write('Hello world!', interval=0.25) # 每個字符間隔0.25秒
注意:pyautogui 并不支持輸入框自動聚焦,所有輸入之前先要點擊輸入框位置。
press()函數(shù)
press()
函數(shù)執(zhí)行的操作相當于鼠標操作的 click()
,它接收傳遞給它的字符串。
press('num0', presses=1, interval=0.0)
- keys:傳入的鍵盤字符串
- presses:操作按鍵次數(shù),默認一次
- interval:每次按鍵的間隔時間,默認0
keys 所有取值如下:
['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';' , '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't' , 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace', 'browserback', 'browserfavorites', 'browserforward', 'browserhome', 'browserrefresh', 'browsersearch','browserstop' ,'capslock', 'clear', 'convert', 'ctrl', 'ctrlleft','ctrlright', 'decimal', 'del', 'delete', 'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2' , 'f20', 'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9' , 'final', 'fn', 'hanguel', 'hangul','hanja', 'help', 'home', 'insert', 'junja' , 'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail', 'launchmediaselect' , 'left', 'modechange', 'multiply', 'nexttrack', 'nonconvert' , 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6', 'num7' , 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn', 'pgup' , 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn', 'prtsc' , 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator', 'shift' , 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab', 'up' , 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen' , 'command', 'option', 'optionleft', 'optionright']
hotkey()函數(shù)
接收多個字符串參數(shù),順序按下,再按相反的順序釋放。
pyautogui.hotkey('ctrl', 'shift', 'esc') 相當于 pyautogui.keyDown('ctrl') # 按下 ctrl pyautogui.keyDown('shift') # 按下 shift pyautogui.keyDown('esc') # 按下 esc pyautogui.keyUp('esc') # 釋放 ctrl pyautogui.keyUp('shift') # 釋放 shift pyautogui.keyUp('ctrl') # 釋放 esc
??示例:
總結(jié)
到此這篇關(guān)于PyAutoGUI圖形用戶界面自動化的文章就介紹到這了,更多相關(guān)PyAutoGUI圖形用戶界面自動化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Flask框架URL管理操作示例【基于@app.route】
這篇文章主要介紹了Flask框架URL管理操作,結(jié)合實例形式分析了@app.route進行URL控制的相關(guān)操作技巧,需要的朋友可以參考下2018-07-07Python學(xué)習(xí)之函數(shù)的定義與使用詳解
函數(shù)是具有某種特定功能的代碼塊,可以重復(fù)使用(在前面數(shù)據(jù)類型相關(guān)章節(jié)。它使得我們的程序更加模塊化,不需要編寫大量重復(fù)的代碼。本文將詳細介紹Python中函數(shù)的定義與使用,感興趣的可以學(xué)習(xí)一下2022-03-03python函數(shù)和python匿名函數(shù)lambda詳解
這篇文章主要介紹了python函數(shù)和python匿名函數(shù)lambda,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-09-09Python3.x+迅雷x 自動下載高分電影的實現(xiàn)方法
這篇文章主要介紹了Python3.x+迅雷x 自動下載高分電影的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01