Windows自动化Python pyautogui RPA操作

打印 上一主题 下一主题

主题 878|帖子 878|积分 2634

依赖包

  1. import time
  2. import pyautogui
  3. import pyperclip
  4. import os
  5. import psutil
  6. from pywinauto.application import Application
复制代码
睡眠:

  1. pyautogui.sleep(1)
复制代码
鼠标事件:

  1. pyautogui.moveTo(100, 100, duration=0.25)
  2. pyautogui.click(100, 100, duration=0.25)
  3. pyautogui.click(10,10)   # 鼠标点击指定位置,默认 PRIMARY 键
  4. pyautogui.click(10,10,button='left')       # 单击左键
  5. pyautogui.click(1000,300,button='right')   # 单击右键
  6. pyautogui.click(1000,300,button='middle')  # 单击中键
  7. ## 为了更方便,下面的函数包装了click,不需要传参 button
  8. pyautogui.leftClick(10,10)                # 单击左键
  9. pyautogui.rightClick(10,10)                # 单击右键
  10. pyautogui.middleClick(10,10)        # 单击中键
  11. # 双击鼠标
  12. pyautogui.doubleClick(10,10)
  13. # 三击鼠标
  14. pyautogui.tripleClick(10,10)
  15. # 按下 & 释放
  16. pyautogui.mouseDown()   # 鼠标按下
  17. pyautogui.mouseUp()    # 鼠标释放
  18. # 拖动鼠标
  19. pyautogui.dragTo(x, y) 绝对位置
  20. pyautogui.drag(x, y) 相对位置
  21. # 滚动鼠标 滚动发生在鼠标的当前位置。 传递正整数表示向上滚动, 传递负整数表示向下滚动。
  22. pyautogui.scroll(-100)
  23. pyautogui.hscroll(100)   # 向右滚动100
  24. pyautogui.hscroll(-100)   # 向左滚动100
  25. # 按键操作 press
  26. pyautogui.press('enter', 5)   # 连按5次回车
  27. # 按下 & 释放
  28. pyautogui.keyDown('A') : 模拟按键按下;
  29. pyautogui.keyUp('A') : 模拟按键释放;
  30. pyautogui.keyDown('ctrl')
  31. pyautogui.keyDown('c')
  32. pyautogui.keyUp('c')
  33. pyautogui.keyUp('ctrl')
  34. pyautogui.hotkey('ctrl', 'c')
复制代码
杀死进程:

  1. def kill_process(process_name):
  2.     for proc in psutil.process_iter(['pid', 'name']):
  3.         if proc.info['name'] == process_name:
  4.             try:
  5.                 proc.kill()
  6.                 print(f"Process {process_name} with PID {proc.info['pid']} has been terminated.")
  7.             except psutil.NoSuchProcess:
  8.                 print(f"Process {process_name} with PID {proc.info['pid']} no longer exists.")
  9.             except psutil.AccessDenied:
  10.                 print(f"Access denied to terminate process {process_name}.")
  11. # 使用
  12. kill_process('AliWorkbench.exe')
复制代码
获取全部窗口的名称:

  1. titles = pyautogui.getAllTitles()
  2. print("titles: ", titles)
复制代码
显示窗口:

  1. def make_window_visible(title):
  2.     try:
  3.         # 尝试连接到已运行的应用程序
  4.         app = Application(backend="uia").connect(title=title, timeout=10)
  5.         window = app.window(title=title)
  6.         # 确保窗口是可见的并且处于最前面
  7.         if not window.is_active():
  8.             window.set_focus()  # 设置焦点,这通常会将窗口带到前台
  9.         if not window.is_visible():
  10.             window.show()  # 显示窗口(如果它被最小化或隐藏)
  11.         print(f"Window '{title}' has been made visible and active.")
  12.     except Exception as e:
  13.         print(f"Failed to make window '{title}' visible: {e}")
  14. # make_window_visible('微信')
复制代码
根据图片找元素:

  1. # 这里只返回一个
  2. def close_dialog():
  3.     try:
  4.         close_icon_center = pyautogui.locateCenterOnScreen('close_icon.png', grayscale=True, confidence=0.9)
  5.         pyautogui.sleep(0.01)
  6.         print("弹框关闭图标-坐标:", close_icon_center)
  7.         if close_icon_center:
  8.             pyautogui.leftClick(close_icon_center.x, close_icon_center.y)
  9.             pyautogui.sleep(0.01)
  10.     except pyautogui.ImageNotFoundException as ee:
  11.         print("没有发现弹框关闭图标")
  12. # 多个的操作
  13. down_select_icon_centers = list(pyautogui.locateAllOnScreen('down_select_icon.png', grayscale=True, confidence=0.9))
  14. print("下拉箭头长度len:", len(down_select_icon_centers))
  15. pyautogui.leftClick(pyautogui.center(down_select_icon_centers[1]).x, pyautogui.center(down_select_icon_centers[1]).y)
复制代码
输入笔墨:

  1. # 这个可能会受到输入法的影响
  2. pyautogui.write()
  3. def paste_str(str1):
  4.         pyperclip.copy(str1)
  5.         pyautogui.hotkey('ctrl', 'v')
  6.         # pyperclip.copy('') # 重置粘贴板内容为空
  7.         # pyperclip.paste() 这是粘贴
  8.        
复制代码
打开应用:

  1. # 打开
  2. Application().start("D:/Program Files/AliWorkbench/AliWorkbench.exe")
  3. # 显示
  4. make_window_visible('千牛工作台')
  5. # 根据windows窗口名称获取窗口,并最大化
  6. chat_window = pyautogui.getWindowsWithTitle('千牛工作台')[0]
  7. chat_window.maximize()
  8. # win.maximize() # 最大化
  9. # win.minimize() # 最小化
  10. # win.restore() # 如果是最大/小化,则恢复成正常状态
  11. # win.close()
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南飓风

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表