利用Python 進行自動化操作: Pyautogui 庫

目錄

1. 前言

2. 安裝 PyAutoGUI

3. 常見函數介紹

3.1 鼠標操作

3.2 鍵盤操作

3.3 截圖與圖像識別?

4. 簡單案例

5. 總結


1. 前言

我們常常需要與各種軟件和系統交互,而人工操作往往耗時且容易出錯。這時,PyAutoGUI 就可以幫我們解放雙手,它是一個強大的 Python 庫,能夠實現對鼠標和鍵盤的自動化控制,模擬人類的操作行為,廣泛應用于自動化測試、數據采集、重復性任務處理等場景。本文將深入淺出地介紹 PyAutoGUI 庫的常見函數及其應用場景,幫助大家快速掌握這一實用工具。

2. 安裝 PyAutoGUI

在開始之前,我們需要先安裝 PyAutoGUI 庫。打開終端或命令行,輸入以下命令:

pip install pyautogui

此外,PyAutoGUI 還依賴于 Pillow 庫(用于圖像處理),在安裝過程中會自動安裝。若遇到問題,可手動安裝 Pillow:

pip install pillow

3. 常見函數介紹

3.1 鼠標操作

獲取鼠標位置?

import pyautogui
print(pyautogui.position())  # 輸出鼠標當前坐標

移動鼠標位置??

moveTo(x, y, duration):將鼠標移動到指定的坐標位置,duration 參數可設置移動的持續時間,使鼠標移動更加自然。

pyautogui.moveTo(100, 200, 2)  # 在 2 秒內將鼠標移動到 (100, 200)

moveRel(xOffset,yOffset,duration):相對于當前位置移動鼠標,`xOffset` 和 `yOffset` 分別表示在 x 和 y 方向上的偏移量。

pyautogui.moveRel(50, -30, 1)  # 相對于當前位置向右移動 50,向上移動 30

鼠標點擊

click(x, y, clicks, interval, button):在指定坐標位置進行點擊操作。clicks 表示點擊次數,interval 設置連續點擊之間的間隔時間,button 可選擇 'left'(左鍵)、'right'(右鍵)或 'middle'(中鍵)。

pyautogui.click(300, 400)  # 左鍵單擊 (300, 400)
pyautogui.doubleClick(500, 600)  # 左鍵雙擊 (500, 600),等同于 pyautogui.click(500, 600, clicks=2)
pyautogui.rightClick(700, 800)  # 右鍵單擊 (700, 800)

3.2 鍵盤操作

按鍵操作

press(key):模擬按下并快速釋放一個按鍵,適用于單個按鍵操作,如 'enter'、'space'、'tab' 等。?

pyautogui.press('enter')  # 模擬按下回車鍵
pyautogui.press('space')  # 模擬按下空格鍵

keyDown(key) 和 keyUp(key):分別模擬按鍵按下和釋放,常用于需要長按某個鍵的場景。例如,模擬按住 Shift 鍵輸入大寫字母。

pyautogui.keyDown('shift')
pyautogui.press('a')  # 輸入大寫字母 A
pyautogui.keyUp('shift')

輸入文本

type(message, interval):模擬鍵盤輸入文本,interval 設置每個字符之間的輸入間隔時間,使輸入更加平穩。

pyautogui.type('Hello, PyAutoGUI!', interval=0.1)  # 輸入文本,字符間隔 0.1 秒

3.3 截圖與圖像識別?

截圖

screenshot(imagePath):截取整個屏幕的截圖,并保存到指定的文件路徑。?

pyautogui.screenshot('screenshot.png')  # 截圖并保存為 screenshot.png

screenshot(region=(left, top, width, height))`:截取指定區域的截圖,`region` 參數定義了截圖的左上角坐標、寬度和高度。

pyautogui.screenshot('region_screenshot.png', region=(100, 200, 300, 400))  # 截取指定區域的截圖

圖像識別

locateOnScreen(image, grayscale=False, confidence=None):在屏幕上查找與指定圖像匹配的區域,返回一個元組,包含匹配區域的左上角坐標、寬度和高度。grayscale 參數可設置為 True 以加快查找速度,但可能降低準確性;confidence 參數用于設置匹配的置信度閾值(0 到 1 之間)。?

location = pyautogui.locateOnScreen('button.png', confidence=0.8)
if location:print('找到圖像,位置為:', location)# 可以進一步獲取中心坐標并點擊center = pyautogui.center(location)pyautogui.click(center)
else:print('未找到圖像')

4. 簡單案例

假設我們要實現一個自動登錄某網頁的腳本。步驟如下:

  1. 打開瀏覽器并進入登錄頁面。

  2. 在用戶名和密碼輸入框中輸入相應內容。

  3. 點擊登錄按鈕。

import pyautogui
import time# 打開瀏覽器并進入登錄頁面(假設已手動打開瀏覽器并定位到登錄頁面)
time.sleep(2)  # 等待頁面加載# 輸入用戶名
pyautogui.click(500, 300)  # 點擊用戶名輸入框(假設坐標為 (500, 300))
pyautogui.type('your_username')# 輸入密碼
pyautogui.click(500, 400)  # 點擊密碼輸入框(假設坐標為 (500, 400))
pyautogui.type('your_password')# 點擊登錄按鈕
pyautogui.click(500, 500)  # 點擊登錄按鈕(假設坐標為 (500, 500))

5. 總結

PyAutoGUI 是一個功能強大且易于使用的 Python 庫,它為我們提供了便捷的鼠標和鍵盤自動化操作功能,以及截圖和圖像識別能力。通過本文介紹的常見函數,我們能夠在各種場景下實現自動化任務,提高工作效率。然而,在使用過程中,我們也需要注意一些細節,如準確獲取坐標、合理設置操作間隔時間等,以確保腳本的穩定性和可靠性。我是橙色小博,關注我,一起在人工智能領域學習進步!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/83946.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83946.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83946.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何在Windows本機安裝Python并確保與Python.NET兼容

?作者簡介:2022年博客新星 第八。熱愛國學的Java后端開發者,修心和技術同步精進。 🍎個人主頁:Java Fans的博客 🍊個人信條:不遷怒,不貳過。小知識,大智慧。 💞當前專欄…

oracle數據恢復—oracle數據庫執行truncate命令后的怎么恢復數據?

oracle數據庫誤執行truncate命令導致數據丟失是一種常見情況。通常情況下,oracle數據庫誤操作刪除數據只需要通過備份恢復數據即可。也會碰到一些特殊情況,例如數據庫備份無法使用或者還原報錯等。下面和大家分享一例oracle數據庫誤執行truncate命令導致…

計算機二級Python考試的核心知識點總結

以下是計算機二級Python考試的核心知識點總結,結合高頻考點和易錯點分類整理: 1. **數據類型與運算** ? 不可變類型:int, float, str, tuple(重點區分list與tuple) ? 運算符優先級:** > * /…

Vue 組件庫發布實戰(含 TypeScript 支持)

整理不易,如果本文對你有幫助,歡迎點個【贊 👍】【收藏 ?】【關注 🧡】 📦Vue 組件庫發布實戰(含 TypeScript 支持) 在上一篇中我們完成了一個基礎 Vue 3 組件的 npm 發布流程。本文將升級內容…

新版雙紫擒龍、紫紫紅黃、動能二號源碼指標源碼公式講解

雙紫擒龍量化指標公式源碼,雙紫擒龍紫紫紅黃2025升級版的量化指標龍頭模型............ 實戰舉例,量化擒龍------副圖源碼,如下: DIF:EMA(CLOSE,12)-EMA(CLOSE,26); DEA:EMA(DIF,9); ABC2:REF(CLOSE,1); ABC3:IF((CLOSE-ABC2…

c++中鎖類型對比與實戰

C++中的鎖類型對比與實戰:std::lock_guard、std::unique_lock、std::shared_lock 在多線程編程中,合理地使用鎖是保證數據一致性和線程安全的關鍵。C++標準庫提供了多種鎖類型,每種都有其適用場景和性能特性。本文將深入分析 std::lock_guard、std::unique_lock、std::shar…

iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆棧溢出

在vue項目中使用iview 框架部分組件時,直接引入使用報Maximum call stack size exceeded image.png 堆棧溢出 解決方案 更換組件名稱就可以了 image.png 或 image.png 就可以了 猜測是因為和vue自己提供的組件名稱一致了,重名問題導致的,具體…

初識結構體,整型提升及操作符的屬性

目錄 一、結構體成員訪問操作符1.1 結構體二、操作符的屬性:優先級、結合性2.1 優先級2.2 結合性C 運算符優先級 三、表達式求值3.1 整型提升3.2 算數轉化 總結 一、結構體成員訪問操作符 1.1 結構體 C語言已經提供了內置類型,如:char,shor…

JVM-內存結構

🧩 一、JVM內存五大核心結構詳解 📌 1. 程序計數器(Program Counter Register) 特性說明作用記錄當前線程執行的字節碼行號指示器(分支/循環/異常處理的核心)線程私有? 每個線程獨立存儲指令位置異常? …

從 Revit 到 3DTiles:GISBox RVT 切片器如何讓建筑圖元在 Web 端展示

在GIS(地理信息系統)行業蓬勃發展的當下,數據處理與展示的效率和精準度成為關鍵。GISBox作為一款功能強大的一站式三維GIS數據編輯、轉換、發布平臺,憑借其獨特的“RVT切片器”功能,在RVT圖元處理方面也有著不俗的表現…

【Linux】為 Git 設置 Commit 提交模板方法,可統一個人或者項目的提交風格

為 Git 設置 Commit 提交模板 新建模板文件。注意之后不能刪除該文件。 gedit ~/.gitmessage.txt粘貼自己的模板。可以給 AI 提自己的需求&#xff0c;定制一個模板&#xff0c;例如 # <type>(<scope>): <description> # # [optional body] # # [optional…

Android第十二次面試GetX庫渲染機制

核心引擎&#xff1a;GetX / Obx 的魔法 .obs 是數據響應式化的關鍵操作&#xff0c;它將普通變量轉換為可觀察(Observable)對象&#xff1a; // 傳統變量 - 無法自動通知更新 int count 0; // 響應式變量 - 自動通知能力 var count 0.obs; // RxInt(0) Obx 是 UI ?響應式…

用 Whisper 打破沉默:AI 語音技術如何重塑無障礙溝通方式?

網羅開發 &#xff08;小紅書、快手、視頻號同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企業從事人工智能項目研發管理工作&#xff0c;平時熱衷于分享各種編程領域的軟硬技能知識以及前沿技術&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…

ubuntu 添加應用到啟動菜單

使用Alacarte菜單編輯器 Alacarte是一個簡單易用的菜單編輯器&#xff0c;可以幫助用戶添加、刪除或編輯應用程序的啟動菜單項。 安裝Alacarte sudo apt-get install alacarte 執行alacarte alacarte 使用說明 選擇新建項目進行添加 "Name"欄填自定義的名稱&quo…

【學習筆記】構造函數+重載相關

【學習筆記】構造函數重載相關 一、構造函數 構造函數在創建對象的過程就會執行&#xff0c;帶參數與不帶參數&#xff0c;帶參數的構造函數會默認將成員變量賦值傳進去的參數。 class Layer { private:int layer_id; // 層IDstd::string layer_json; // 層的JSON配置…

6.6 計算機網絡面試題

描述一下打開百度首頁后發生的網絡過程 網頁非常慢轉圈圈的時候&#xff0c;要定位問題需要從哪些角度&#xff1f; server a和server b&#xff0c;如何判斷兩個服務器正常連接&#xff1f;出錯怎么辦&#xff1f; 服務端正常啟動了&#xff0c;但是客戶端請求不到有哪些原因?…

Java -jar命令運行外部依賴JAR包的深度場景分析與實踐指南

Java -jar命令運行外部依賴JAR包的深度場景分析與實踐指南 引言&#xff1a;外部依賴JAR的必要性 在Java應用部署中&#xff0c;java -jar命令是啟動可執行JAR包的標準方式。但當應用需要依賴外部JAR文件時&#xff08;如插件系統、模塊化部署、共享庫等場景&#xff09;&…

XHR / Fetch / Axios 請求的取消請求與請求重試

XHR / Fetch / Axios 請求的取消請求與請求重試是前端性能優化與穩定性處理的重點&#xff0c;也是面試高頻內容。下面是這三種方式的詳解封裝方案&#xff08;可直接復用&#xff09;。 ? 一、Axios 取消請求與請求重試封裝 1. 安裝依賴&#xff08;可選&#xff0c;用于擴展…

2025最新Java日志框架深度解析:Log4j 2 vs Logback性能實測+企業級實戰案例

一、為什么printStackTrace是"代碼墳場"&#xff1f; 你寫的日志可能正在拖垮系統&#xff01; 在Java開發中&#xff0c;直接調用printStackTrace()打印異常堆棧是最常見的"自殺式操作"。這種方式會導致三大致命問題&#xff1a; 無法分級控制&#xff…

前端面試四之Fetch API同步和異步

Fetch API&#xff08;Fetch Application Programming Interface&#xff09;是一個現代的、基于Promise的網絡請求接口&#xff0c;用于在瀏覽器環境中發起網絡請求并處理響應。它是對傳統XMLHttpRequest的改進&#xff0c;提供了更簡潔、靈活和強大的功能&#xff0c;廣泛應用…