Windows自動(dòng)化Python?pyautogui?RPA操作實(shí)現(xiàn)
更新時(shí)間:2025年01月14日 08:58:42 作者:胡子哥502
本文詳細(xì)介紹了使用Python的pyautogui庫(kù)進(jìn)行Windows自動(dòng)化操作的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
依賴(lài)包
import time import pyautogui import pyperclip import os import psutil from pywinauto.application import Application
睡眠:
pyautogui.sleep(1)
鼠標(biāo)事件:
pyautogui.moveTo(100, 100, duration=0.25) pyautogui.click(100, 100, duration=0.25) pyautogui.click(10,10) # 鼠標(biāo)點(diǎn)擊指定位置,默認(rèn) PRIMARY 鍵 pyautogui.click(10,10,button='left') # 單擊左鍵 pyautogui.click(1000,300,button='right') # 單擊右鍵 pyautogui.click(1000,300,button='middle') # 單擊中鍵 ## 為了更方便,下面的函數(shù)包裝了click,不需要傳參 button pyautogui.leftClick(10,10) # 單擊左鍵 pyautogui.rightClick(10,10) # 單擊右鍵 pyautogui.middleClick(10,10) # 單擊中鍵 # 雙擊鼠標(biāo) pyautogui.doubleClick(10,10) # 三擊鼠標(biāo) pyautogui.tripleClick(10,10) # 按下 & 釋放 pyautogui.mouseDown() # 鼠標(biāo)按下 pyautogui.mouseUp() # 鼠標(biāo)釋放 # 拖動(dòng)鼠標(biāo) pyautogui.dragTo(x, y) 絕對(duì)位置 pyautogui.drag(x, y) 相對(duì)位置 # 滾動(dòng)鼠標(biāo) 滾動(dòng)發(fā)生在鼠標(biāo)的當(dāng)前位置。 傳遞正整數(shù)表示向上滾動(dòng), 傳遞負(fù)整數(shù)表示向下滾動(dòng)。 pyautogui.scroll(-100) pyautogui.hscroll(100) # 向右滾動(dòng)100 pyautogui.hscroll(-100) # 向左滾動(dòng)100 # 按鍵操作 press pyautogui.press('enter', 5) # 連按5次回車(chē) # 按下 & 釋放 pyautogui.keyDown('A') : 模擬按鍵按下; pyautogui.keyUp('A') : 模擬按鍵釋放; pyautogui.keyDown('ctrl') pyautogui.keyDown('c') pyautogui.keyUp('c') pyautogui.keyUp('ctrl') pyautogui.hotkey('ctrl', 'c')
殺死進(jìn)程:
def kill_process(process_name): for proc in psutil.process_iter(['pid', 'name']): if proc.info['name'] == process_name: try: proc.kill() print(f"Process {process_name} with PID {proc.info['pid']} has been terminated.") except psutil.NoSuchProcess: print(f"Process {process_name} with PID {proc.info['pid']} no longer exists.") except psutil.AccessDenied: print(f"Access denied to terminate process {process_name}.") # 使用 kill_process('AliWorkbench.exe')
獲取所有窗口的名稱(chēng):
titles = pyautogui.getAllTitles() print("titles: ", titles)
顯示窗口:
def make_window_visible(title): try: # 嘗試連接到已運(yùn)行的應(yīng)用程序 app = Application(backend="uia").connect(title=title, timeout=10) window = app.window(title=title) # 確保窗口是可見(jiàn)的并且處于最前面 if not window.is_active(): window.set_focus() # 設(shè)置焦點(diǎn),這通常會(huì)將窗口帶到前臺(tái) if not window.is_visible(): window.show() # 顯示窗口(如果它被最小化或隱藏) print(f"Window '{title}' has been made visible and active.") except Exception as e: print(f"Failed to make window '{title}' visible: {e}") # make_window_visible('微信')
根據(jù)圖片找元素:
# 這里只返回一個(gè) def close_dialog(): try: close_icon_center = pyautogui.locateCenterOnScreen('close_icon.png', grayscale=True, confidence=0.9) pyautogui.sleep(0.01) print("彈框關(guān)閉圖標(biāo)-坐標(biāo):", close_icon_center) if close_icon_center: pyautogui.leftClick(close_icon_center.x, close_icon_center.y) pyautogui.sleep(0.01) except pyautogui.ImageNotFoundException as ee: print("沒(méi)有發(fā)現(xiàn)彈框關(guān)閉圖標(biāo)") # 多個(gè)的操作 down_select_icon_centers = list(pyautogui.locateAllOnScreen('down_select_icon.png', grayscale=True, confidence=0.9)) print("下拉箭頭長(zhǎng)度len:", len(down_select_icon_centers)) pyautogui.leftClick(pyautogui.center(down_select_icon_centers[1]).x, pyautogui.center(down_select_icon_centers[1]).y)
輸入文字:
# 這個(gè)可能會(huì)受到輸入法的影響 pyautogui.write() def paste_str(str1): pyperclip.copy(str1) pyautogui.hotkey('ctrl', 'v') # pyperclip.copy('') # 重置粘貼板內(nèi)容為空 # pyperclip.paste() 這是粘貼
打開(kāi)應(yīng)用:
# 打開(kāi) Application().start("D:/Program Files/AliWorkbench/AliWorkbench.exe") # 顯示 make_window_visible('千牛工作臺(tái)') # 根據(jù)windows窗口名稱(chēng)獲取窗口,并最大化 chat_window = pyautogui.getWindowsWithTitle('千牛工作臺(tái)')[0] chat_window.maximize() # win.maximize() # 最大化 # win.minimize() # 最小化 # win.restore() # 如果是最大/小化,則恢復(fù)成正常狀態(tài) # win.close()
到此這篇關(guān)于Windows自動(dòng)化Python pyautogui RPA操作實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python pyautogui RPA操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android模擬器無(wú)法啟動(dòng),報(bào)錯(cuò):Cannot set up guest memory ‘a(chǎn)ndroid_arm’ I
這篇文章主要介紹了Android模擬器無(wú)法啟動(dòng),報(bào)錯(cuò):Cannot set up guest memory ‘a(chǎn)ndroid_arm’ Invalid argument的解決方法,通過(guò)模擬器ram設(shè)置的調(diào)整予以解決,需要的朋友可以參考下2016-07-07Python基于smtplib協(xié)議實(shí)現(xiàn)發(fā)送郵件
這篇文章主要介紹了Python基于smtplib協(xié)議實(shí)現(xiàn)發(fā)送郵件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06python訪問(wèn)類(lèi)中docstring注釋的實(shí)現(xiàn)方法
這篇文章主要介紹了python訪問(wèn)類(lèi)中docstring注釋的實(shí)現(xiàn)方法,涉及python類(lèi)注釋的訪問(wèn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-05-05