当前位置: 代码网 > it编程>前端脚本>Python > Windows自动化Python pyautogui RPA操作实现

Windows自动化Python pyautogui RPA操作实现

2025年01月15日 Python 我要评论
依赖包import timeimport pyautoguiimport pyperclipimport osimport psutilfrom pywinauto.application impor

依赖包

import time
import pyautogui
import pyperclip
import os
import psutil
from pywinauto.application import application

睡眠:

pyautogui.sleep(1)

鼠标事件:

pyautogui.moveto(100, 100, duration=0.25)
pyautogui.click(100, 100, duration=0.25)
pyautogui.click(10,10)   # 鼠标点击指定位置,默认 primary 键
pyautogui.click(10,10,button='left')       # 单击左键
pyautogui.click(1000,300,button='right')   # 单击右键
pyautogui.click(1000,300,button='middle')  # 单击中键


## 为了更方便,下面的函数包装了click,不需要传参 button
pyautogui.leftclick(10,10)		# 单击左键
pyautogui.rightclick(10,10)		# 单击右键
pyautogui.middleclick(10,10)	# 单击中键

# 双击鼠标
pyautogui.doubleclick(10,10)

# 三击鼠标
pyautogui.tripleclick(10,10)

# 按下 & 释放
pyautogui.mousedown()   # 鼠标按下
pyautogui.mouseup()    # 鼠标释放

# 拖动鼠标
pyautogui.dragto(x, y) 绝对位置
pyautogui.drag(x, y) 相对位置

# 滚动鼠标 滚动发生在鼠标的当前位置。 传递正整数表示向上滚动, 传递负整数表示向下滚动。
pyautogui.scroll(-100)
pyautogui.hscroll(100)   # 向右滚动100
pyautogui.hscroll(-100)   # 向左滚动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')

杀死进程:

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:
        # 尝试连接到已运行的应用程序
        app = application(backend="uia").connect(title=title, timeout=10)
        window = app.window(title=title)
        # 确保窗口是可见的并且处于最前面
        if not window.is_active():
            window.set_focus()  # 设置焦点,这通常会将窗口带到前台
        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('微信')

根据图片找元素:

# 这里只返回一个
def close_dialog():
    try:
        close_icon_center = pyautogui.locatecenteronscreen('close_icon.png', grayscale=true, confidence=0.9)
        pyautogui.sleep(0.01)
        print("弹框关闭图标-坐标:", 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("没有发现弹框关闭图标")
 
 # 多个的操作
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)

输入文字:

# 这个可能会受到输入法的影响
pyautogui.write()

def paste_str(str1):
	pyperclip.copy(str1)
	pyautogui.hotkey('ctrl', 'v')
	# pyperclip.copy('') # 重置粘贴板内容为空
	# pyperclip.paste() 这是粘贴

打开应用:

# 打开
application().start("d:/program files/aliworkbench/aliworkbench.exe")
# 显示
make_window_visible('千牛工作台')
# 根据windows窗口名称获取窗口,并最大化
chat_window = pyautogui.getwindowswithtitle('千牛工作台')[0]
chat_window.maximize()

# win.maximize() # 最大化

# win.minimize() # 最小化

# win.restore() # 如果是最大/小化,则恢复成正常状态

# win.close()

到此这篇关于windows自动化python pyautogui rpa操作实现的文章就介绍到这了,更多相关python pyautogui rpa操作内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网! 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com