Windows自動(dòng)化Python?pyautogui?RPA操作實(shí)現(xiàn)
更新時(shí)間:2025年01月14日 08:58:42 作者:胡子哥502
本文詳細(xì)介紹了使用Python的pyautogui庫進(jìn)行Windows自動(dòng)化操作的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
依賴包
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次回車
# 按下 & 釋放
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')獲取所有窗口的名稱:
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)
# 確保窗口是可見的并且處于最前面
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("沒有發(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("下拉箭頭長度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() 這是粘貼打開應(yīng)用:
# 打開
Application().start("D:/Program Files/AliWorkbench/AliWorkbench.exe")
# 顯示
make_window_visible('千牛工作臺(tái)')
# 根據(jù)windows窗口名稱獲取窗口,并最大化
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模擬器無法啟動(dòng),報(bào)錯(cuò):Cannot set up guest memory ‘a(chǎn)ndroid_arm’ I
這篇文章主要介紹了Android模擬器無法啟動(dòng),報(bào)錯(cuò):Cannot set up guest memory ‘a(chǎn)ndroid_arm’ Invalid argument的解決方法,通過模擬器ram設(shè)置的調(diào)整予以解決,需要的朋友可以參考下2016-07-07
Python基于smtplib協(xié)議實(shí)現(xiàn)發(fā)送郵件
這篇文章主要介紹了Python基于smtplib協(xié)議實(shí)現(xiàn)發(fā)送郵件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
python訪問類中docstring注釋的實(shí)現(xiàn)方法
這篇文章主要介紹了python訪問類中docstring注釋的實(shí)現(xiàn)方法,涉及python類注釋的訪問技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-05-05

