PyAutoGUI——圖形用戶界面自動化(超級詳細)

      網友投稿 2174 2022-05-29

      開始之前

      查看屏幕大小

      獲取當前鼠標的位置

      檢查指定坐標是否在屏幕上

      設置暫停時間

      鼠標功能

      移動鼠標

      鼠標點擊

      鼠標拖動

      鼠標滾動

      開始之前

      查看屏幕大小

      獲取當前鼠標的位置

      檢查指定坐標是否在屏幕上

      設置暫停時間

      鼠標功能

      移動鼠標

      鼠標點擊

      鼠標拖動

      鼠標滾動

      屏幕功能

      截屏功能

      定位功能

      消息框功能

      alert()函數

      confirm()函數

      prompt()函數

      password()函數

      鍵盤控制功能

      write()函數

      press()函數

      hotkey()函數

      開始之前

      在開始之前,要先安裝所需要的模塊 pyautogui, pyautogui 模塊可以向 Windows 發送虛擬按鍵和鼠標點擊。

      pip install -i https://pypi.douban.com/simple pyautogui

      查看屏幕大小

      pyautogui.size() 可以獲得屏幕的寬和高的像素數(整數)。

      >>> pyautogui.size() Size(width=1920, height=1080) # 也可以直接將寬,高進行保存 x, y = pyautogui.size()

      獲取當前鼠標的位置

      函數返回當前位置 X,Y 坐標的元組,如果設置 x,y 的參數,則會覆蓋返回結果。

      >>> pyautogui.position(x=None, y=None) Point(x=1437, y=817)

      檢查指定坐標是否在屏幕上

      要檢查 X,Y 坐標是否在屏幕上,將它們(支持兩個整數,列表,元組)傳遞給 onScreen() 函數,如果它們在屏幕的邊界內,則返回 True ,否則返回 False 。

      >>> pyautogui.size() (1920, 1080) >>> pyautogui.onScreen(1920, 1080) False >>> pyautogui.onScreen(1919, 1079) True

      設置暫停時間

      使用 pyautogui.PAUSE 變量設置要暫 停的秒數。如,在設置 pyautogui.PAUSE = 1 之后,每個 PyAutoGUI 函數調用 在執行動作之后,都會等待一秒。

      >>> 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

      主要參數參數:

      x/xOffset:X軸坐標,moveTo() 中取值0或正整數值,move()/moveRel() 中取值可以為負數,代表以當前位置向左移動

      y/yOffset:Y軸坐標,moveTo() 中取值0或正整數值,move()/moveRel() 中取值可以為負數,代表以當前位置向上移動

      duration:移動到指定坐標花費的時間,默認為0,代表立即完成,單位為s

      鼠標點擊

      使用 click() 完成鼠標點擊操作。

      >>> pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button=PRIMARY, duration=0.0)

      主要參數:

      x:X軸坐標,默認為 None,即當前X軸坐標

      y:Y軸坐標,默認為 None,即當前Y軸坐標(注:X,Y 軸的坐標只能同時指定,不能只指定某一個)

      clicks:鼠標的點擊次數,默認為 1 次

      interval:int 或浮點數,表示每次單擊之間需要等待多少秒,默認值為0.0,表示單擊之間沒有暫停

      button:可選 LEFT、MIDDLE、RIGHT、PRIMARY(左鍵)或 SECONDARY(右鍵)。它的默認值是 PRIMARY

      duration:如果指定了 X,Y 的值,并且該坐標不是鼠標當前位置的話,那么 duration 參數就可以生效,它表示移動到指定坐標花費的時間,默認為 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) # 將鼠標拖動到屏幕上相對于當前位置的一個點。

      主要參數:

      x,y/xOffset,yOffset:x 和 y 指明鼠標事件發生的位置。如果為 None,則使用鼠標當前位置。如果是浮點值,則將其舍入。如果在屏幕邊界之外,則事件發生在屏幕邊緣。

      duration:如果指定了 X,Y 的值,并且該坐標不是鼠標當前位置的話,那么 duration 參數就可以生效,它表示移動到指定坐標花費的時間,默認為 0,表示立即移動。

      button:可選 LEFT、MIDDLE、RIGHT、PRIMARY(左鍵)或 SECONDARY(右鍵)。它的默認值是 PRIMARY

      示例:

      鼠標滾動

      垂直滾動,在不同平臺滾動的效果可能不一樣。

      >>> pyautogui.scroll(100) # 向上滾動100 >>> pyautogui.scroll(-100) # 向下滾動100 >>> pyautogui.scroll(100, x=200, y=200) # 移動到200, 然后執行滾動

      水平滾動,(適用與 OS X 和 Linux 平臺上)。

      >>> pyautogui.hscroll(100) # 向右滾動100 >>> pyautogui.hscroll(-100) # 向左滾動100

      示例:

      屏幕功能

      截屏功能

      使用 screenshot() 函數來實現截屏功能。調用 screenshot() 將返回一個 Image 對象。傳入一個文件名字符串將把截圖保存到文件中,并將其作為一個 Image 對象返回。通過 region 關鍵字參數來捕獲指定區域,只需傳遞一個由 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))

      定位功能

      如果不知道要點擊的內容在屏幕上的確切坐標,就不能調用 moveTo() 和 click() 函數。但是,如果有按鈕的圖像,如下面這個圖片,那就可以調用 locateOnScreen('圖片路徑') 函數來獲取坐標。返回值是一個元組:(left, top, width, height)。這個元組可以傳遞給 center() 來獲得該區域中心的坐標(X,Y)。如果在屏幕上找不到圖像,locateOnScreen() 將引發 ImageNotFoundException 異常。

      >>> location = pyautogui.locateOnScreen('圖片路徑') >>> pyautogui.center(location)

      還可以將 grayscale=True 傳遞給 locateOnScreen,以略微加速(大約 30%)。這降低了圖像和截圖的顏色飽和度,加快了定位速度,但可能會導致錯誤匹配。

      消息框功能

      PyAutoGUI 利用 PyMsgBox 中的消息框函數提供了一種跨平臺的純 Python 方法來顯示 javascript 樣式的消息框。

      alert()函數

      >>> pyautogui.alert(text='text', title='title', button='alert!') 'alert!'

      顯示一個帶有文本的簡單消息框和一個 alert! 按鈕。單擊按鈕后返回 button 的值。

      示例:

      confirm()函數

      顯示帶有多個按鈕的消息框。按鈕的數量和文字可以自己設置。單擊按鈕返回該按鈕的文本。

      PyAutoGUI——圖形用戶界面自動化(超級詳細)

      >>> pyautogui.confirm(text='text', title='title', buttons=['再考慮一下', '卸載']) '卸載'

      示例:

      prompt()函數

      顯示一個包含 確認,取消 按鈕和文本輸入欄的消息框,用戶可以輸入指定內容。當點擊確認按鈕后,返回輸入框中的值;若點擊取消,則返回 None 。

      pyautogui.prompt(text='text', title='title', default='請輸入文本信息')

      示例:

      password()函數

      顯示一個包含 確認,取消 按鈕和文本輸入欄的消息框,輸入的字符顯示為"*"。如果點擊確認則返回輸入的文本;如果單擊“取消”,則為 None 。

      pyautogui.password(text='text', title='title', default='密碼', mask='*')

      示例:

      鍵盤控制功能

      write()函數

      write() 函數將在傳入的字符串中鍵入字符。若要在按下每個字符鍵之間添加延遲間隔,interval 參數可以設置每個按鍵之間添加延遲。

      >>> pyautogui.write('Hello world!', interval=0.25) # 每個字符間隔0.25秒

      注意:pyautogui 并不支持輸入框自動聚焦,所有輸入之前先要點擊輸入框位置。

      press()函數

      press() 函數執行的操作相當于鼠標操作的 click(),它接收傳遞給它的字符串。

      press('num0', presses=1, interval=0.0)

      keys:傳入的鍵盤字符串

      presses:操作按鍵次數,默認一次

      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()函數

      接收多個字符串參數,順序按下,再按相反的順序釋放。

      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

      示例:

      暫時整理到這里吧,如果感覺還不錯的話,

      ? 記得點個贊喲?。?!?

      對于剛入門 Python 或是想要入門 Python 的小伙伴,可以通微信搜Python新視野,一起交流學習,都是從新手走過來的,有時候一個簡單的問題卡很久,但可能別人的一點撥就會恍然大悟,由衷的希望大家能夠共同進步。

      Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:【成長之路】本科比賽經驗分享
      下一篇:Clickhouse源碼分析:復制表數據的同步原理
      相關文章
      亚洲国产精品尤物YW在线观看| 亚洲精品国产福利在线观看| 久久亚洲精品无码AV红樱桃| 日本亚洲国产一区二区三区| 亚洲精品国产V片在线观看| 久久亚洲AV成人无码国产电影| 亚洲国产精品综合久久20| 亚洲成a人片7777| 亚洲蜜芽在线精品一区| 亚洲视频在线播放| 99人中文字幕亚洲区| 亚洲综合成人网在线观看| 亚洲成人激情在线| 亚洲精品高清久久| 久久久久亚洲Av无码专| 中文字幕在线观看亚洲| 亚洲欧洲高清有无| 亚洲另类春色校园小说| 亚洲人6666成人观看| 国产成人精品日本亚洲专一区| 亚洲综合偷自成人网第页色| 中国亚洲呦女专区| 亚洲av永久中文无码精品| 精品国产_亚洲人成在线| 男人的天堂亚洲一区二区三区 | 亚洲国产日韩精品| 亚洲成人黄色在线观看| 亚洲免费中文字幕| 亚洲综合国产成人丁香五月激情| 亚洲综合一区二区三区四区五区| 亚洲人成色99999在线观看| 亚洲国产成人手机在线观看| 日韩精品亚洲专区在线影视| 亚洲一区二区三区在线播放| 亚洲综合色婷婷七月丁香| 国产成人亚洲精品青草天美| 99久久亚洲综合精品成人网| 亚洲午夜精品在线| 亚洲熟妇无码AV不卡在线播放| 国产成人综合亚洲一区| 国产亚洲老熟女视频|