Python pyautogui脚本运行15分钟后自动停止 如何实现无限运行?
PyAutoGUI脚本运行15-30分钟自动停止的原因及解决办法
核心原因
- 触发PyAutoGUI默认故障安全机制:PyAutoGUI默认开启故障安全,只要鼠标移动到屏幕左上角(0,0)附近就会主动抛出异常终止脚本。你的代码循环中每次都会把鼠标移到(0,35),离触发区域极近,哪怕是系统卡顿导致的微小坐标偏移、或者你不小心误碰鼠标,都可能触发该机制,而你只捕获了
KeyboardInterrupt异常,触发故障安全的异常没有被捕获,脚本就会直接静默退出。 - 未捕获的运行时异常:代码写死了固定坐标和窗口标题,一旦你切换了显示器分辨率、调整了Teams窗口状态、Teams窗口标题因为收到消息/切换页面发生变化,都会触发坐标越界、窗口找不到等异常,没有捕获逻辑的情况下脚本会直接停止。
- 系统电源策略触发:如果你的电脑开启了无操作自动休眠、自动待机、硬盘自动关闭的策略,15-30分钟无手动操作就会进入低功耗状态,脚本自然停止运行。
解决办法
- 关闭故障安全机制,或者调整循环中的鼠标坐标远离左上角区域,在import语句后加一行配置即可:
pe.FAILSAFE = False
- 补充异常捕获逻辑,打印错误信息方便定位,不要只捕获键盘中断异常。
- 检查系统电源设置,关闭自动休眠、自动待机、自动关闭屏幕的相关策略。
- 尽量不要写死固定坐标,可以先获取当前屏幕分辨率再做相对定位,避免分辨率变化导致坐标越界。
优化后参考代码
import pyautogui as pe import time # 关闭故障安全 pe.FAILSAFE = False # 增加1秒操作延迟避免操作过快报错 pe.PAUSE = 1 print ("************按CTRL-C退出程序************") try: # 操作前先校验坐标是否在当前屏幕范围内 screen_width, screen_height = pe.size() if 1915 < screen_width and 1070 < screen_height: pe.click(1915, 1070, 1, 3,'left') pe.hotkey('win','q') pe.write('Microsoft Teams') pe.press('enter') # 增加等待窗口加载的逻辑,避免窗口没找到报错 time.sleep(5) teams_windows = pe.getWindowsWithTitle("Microsoft Teams") if teams_windows: teams_windows[0].maximize() time.sleep(3) except KeyboardInterrupt: pass except Exception as e: print(f"初始化阶段报错:{e}") try: while True: pe.moveTo(50, 100, 1) # 调整坐标远离左上角 pe.moveTo(1116, 132, 1) time.sleep(10) except KeyboardInterrupt: pass except Exception as e: print(f"运行阶段报错:{e}")
内容的提问来源于stack exchange,提问作者RACHIT DAVE
相关产品推荐
相关产品推荐

