Python PyAutoGUI


  1. 說明
    1. 座標管理
    2. 游標操作
    3. 輸入內容
    4. 偵測畫面
    5. Failsafe
  2. 搭配的 Library

筆記自動化與爬蟲工具系列之 PyAutoGUI Library,如何利用自動化與爬蟲技術提高工作效率。

logo

說明

pip install pyautogui

座標管理

因為在設計 PyAutoGUI 的過程中會使用到大量的座標點,建議使用以下方式管理與存取。

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])

coords = {
    'start': Point(115, 350),
    'button': Point(900, 350),
    'end': Point(1702, 337)
}

pyautogui.moveTo(*coords['start'])

游標操作

pyautogui.size()
# 取得螢幕解析度
# Size(width=2560, height=1440)
pyautogui.moveTo(x, y)
# 游標移動到特定座標

pyautogui.moveTo(x, y, duration = 2, tween=pyautogui.easeInOutQuad)
# 加入游標移動的過程

pyautogui.move(x_offset, y_offset)
# 將游標向 x 軸與 y軸相對進行移動量
pyautogui.click()
# 游標點擊

pyautogui.click(x, y)
# 游標點擊特定座標
pyautogui.dragTo(x, y, duration=1)
# 從目標的游標拖曳到特定座標

pyautogui.drag(x_offset, y_offset, duration=1)
# 從目標的游標拖曳相對 x 與 y 的移動量
pyautogui.displayMousePosition()
# 動態取得目前游標所在的座標以及 Pixel RGB
pyautogui.scroll(500)
pyautogui.scroll(-500)
# 滑鼠滾輪操作

輸入內容

pyautogui.typewrite("text")
# 輸入指定的內容

pyautogui.hotkey("ctrl", "v")
# 貼上記憶體中的內容

pyautogui.write('Hello World!', interval=0.25)
# 輸入內容並控制輸入間隔
pyautogui.keyDown('shift')
pyautogui.press('2')
pyautogui.keyUp('shift')

# 持續按壓 Shift,模擬輸入 @ 的過程

偵測畫面

pyautogui.screenshot("screenshot.png")
# 截圖並儲存

pyautogui.locateOnScreen("image.png")
# 尋找特定圖片是否存在於螢幕畫面中,並回傳座標
window = pyautogui.getWindowsWithTitle('Notepad')[0]
window.maximize()

Failsafe

pyautogui.FAILSAFE = True

為了在自動化過程有狀況,啟用 FAILSAFE 可以讓使用者將游標移動到 (0, 0) 或者是輸入 Ctrl + Alt + Delete 時,停止自動化。

搭配的 Library

經常與 PyAutoGUI 搭配的 Library:

import pyperclip
pyperclip.copy('text keep in clip')
# 將資料儲存在 clip

pyautogui.typewrite(pyperclip.paste())
# 從 clip 輸入到介面

pyautogui.hotkey("ctrl", "v")
# 從 clip 貼上到介面
import time

threshold = 600

start_time = time.time()
end_time = time.time()

if end_time - start_time > threshold:
  print(f'已經執行超過 {threshold} 秒')