天天看點

Python pyautogui 子產品-實作滑鼠鍵盤自動化

本文簡單介紹如何使用 Python 的 pyautogui 子產品實作滑鼠的自動移動以及鍵盤的自行輸入. 該子產品不是 Python 自帶的, 是以執行以下指令進行安裝

<code># pyautogui子產品依賴image子產品,沒有image會報ImportError: No module named 'PIL'錯誤</code>

<code>pip install image</code>

<code>pip install pyautogui</code>

使用 pyautogui 子產品控制滑鼠的移動

size(): 用于擷取螢幕分辨率

<code>import</code> <code>pyautogui</code>

<code>print</code><code>(pyautogui.size())</code>

moveTo(): 用于滑鼠的移動

<code>pyautogui.moveTo(</code><code>100</code><code>,</code><code>100</code><code>,duration</code><code>=</code><code>1</code><code>)</code>

這段代碼調用了 moveTo() 函數, 其接受 x, y 坐标作為參數, 還有一個可選的持續時間參數. 該函數将滑鼠指針從目前位置移動到 (x, y) 坐标指定的位置, 移動花費的時間由持續時間參數指定. 儲存并運作該 Python 腳本, 你将看到, 滑鼠指針像被施了魔法一樣, 從目前位置花 1 秒鐘時間移動到坐标位置 (100, 100).

moveRel(): 根據目前位置, 相對移動滑鼠指針

<code>pyautogui.moveRel(</code><code>0</code><code>,</code><code>300</code><code>,duration</code><code>=</code><code>1</code><code>)</code>

這段代碼将滑鼠指針從原位置相對地移動 (0, 300) 個像素點 (譯注: 即向下移動 300 像素). 比如說, 運作代碼之前, 滑鼠指針在 (1000, 300), 那麼代碼運作之後, 滑鼠指針将移動到 (1000, 600), 耗時 1 秒.

position(): 擷取目前滑鼠指針的位置

<code>print</code><code>(pyautogui.position())</code>

輸出: 程式執行時的滑鼠所在的位置坐标.

click(): 用于控制滑鼠點選和拖拽

<code>pyautogui.click(</code><code>370</code><code>,</code><code>120</code><code>)</code>

在(370,120)的位置模拟滑鼠點選,其中click還有一個參數動作button,預設為'lest',當button='right'時,可rightClick()效果一樣(滑鼠右鍵點選)

doubleClick() 輕按兩下

rightClick() 右擊

有兩個與滑鼠拖拽操作相關的函數: dragTo 和 dragRel. 它們的行為與 moveTo 和 moveRel 類似, 差別在于拖拽操作在移動的過程中, 會保持滑鼠左鍵被按下.

該功能可用于不同的場景, 比如移動對話框,或在 Windows 的畫闆程式中用鉛筆工具自動繪圖

<code>import</code> <code>time</code>

<code>time.sleep(</code><code>5</code><code>) </code><code># 5秒種時間切換到畫闆程式</code>

<code>pyautogui.moveTo(</code><code>200</code><code>,</code><code>200</code><code>,duration</code><code>=</code><code>1</code><code>) </code><code># 滑鼠移動到(200,200)的位置</code>

<code>pyautogui.dragRel(</code><code>100</code><code>,</code><code>0</code><code>,duration</code><code>=</code><code>1</code><code>)</code>

<code>pyautogui.dragRel(</code><code>0</code><code>,</code><code>100</code><code>,duration</code><code>=</code><code>1</code><code>)</code>

<code>pyautogui.dragRel(</code><code>-</code><code>100</code><code>,</code><code>0</code><code>,duration</code><code>=</code><code>1</code><code>)</code>

<code>pyautogui.dragRel(</code><code>0</code><code>,</code><code>-</code><code>100</code><code>,duration</code><code>=</code><code>1</code><code>)</code>

scroll(): 滾屏函數接受像素數作為參數, 并用給定的像素數向上滾屏

<code>pyautogui.scroll(</code><code>200</code><code>)</code>

對選中的視窗進行向上滾屏200個像素點.當值為負數時,向下移動

typewrite(): 用于自動鍵入字元串, 隻需将要鍵入的字元串傳遞給函數作為參數即可

<code>pyautogui.click(</code><code>100</code><code>,</code><code>200</code><code>)</code>

<code>pyautogui.typewrite(</code><code>'hello word!'</code><code>)</code>

假設文本區域位于螢幕 (100, 200) 的坐标位置, 那麼這段代碼将點選文本區域, 激活它, 并鍵入'hello word!'

傳遞鍵名: 可以向 typywrite() 函數傳入分離的鍵名.

<code>pyautogui.typewrite([</code><code>'a'</code><code>,</code><code>'left'</code><code>,</code><code>'ctrlleft'</code><code>])</code>

這段代碼等價于: 鍵入 "a", 然後敲擊左方向鍵, 再敲擊左 ctrl 鍵.

熱鍵組合: hotkey() 可以模拟組合熱鍵, 比如: ctrl-c, ctrl-a, ctrl-v 等

<code>pyautogui.hotkey(</code><code>'ctrlleft'</code><code>,</code><code>'v'</code><code>)</code>

模拟ctrl-v,複制功能

<code>pyautogui.hotkey(</code><code>'ctrl'</code><code>, </code><code>'shift'</code><code>, </code><code>'esc'</code><code>)</code>

<code>等價于</code>

<code>pyautogui.keyDown(</code><code>'ctrl'</code><code>)</code>

<code>pyautogui.keyDown(</code><code>'shift'</code><code>)</code>

<code>pyautogui.keyDown(</code><code>'esc'</code><code>)</code>

<code>pyautogui.keyUp(</code><code>'esc'</code><code>)</code>

<code>pyautogui.keyUp(</code><code>'shift'</code><code>)</code>

<code>pyautogui.keyUp(</code><code>'ctrl'</code><code>)</code>

press() :鍵盤功能按鍵

<code>pyautogui.press(</code><code>'enter'</code><code>)  </code><code># press the Enter key</code>

<code>pyautogui.press(</code><code>'f1'</code><code>)     </code><code># press the F1 key</code>

<code>pyautogui.press(</code><code>'left'</code><code>)   </code><code># press the left arrow key</code>

消息彈窗函數

如果你需要消息彈窗,通過單擊OK暫停程式,或者向使用者顯示一些資訊,消息彈窗函數就會有類似JavaScript的功能:

<code>pyautogui.alert(</code><code>'這個消息彈窗是文字+OK按鈕'</code><code>)  </code><code># 傳回OK </code>

<code>pyautogui.confirm(</code><code>'這個消息彈窗是文字+OK+Cancel按鈕'</code><code>) </code><code># 傳回OK 或 Cancel</code>

<code>pyautogui.prompt(</code><code>'這個消息彈窗是讓使用者輸入字元串,單擊OK'</code><code>) </code><code># 傳回輸入的字元串</code>

<code></code>

本文轉自 baby神 51CTO部落格,原文連結:http://blog.51cto.com/babyshen/1891562,如需轉載請自行聯系原作者

繼續閱讀