You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server中PyAutoGUI自动化任务计划执行失败求助

问题排查与解决方案

针对你遇到的PyAutoGUI自动化脚本在Windows任务计划程序中运行失败的问题,以下是具体排查方向和解决办法:

1. 桌面会话权限问题

任务计划程序的"仅用户登录时运行"模式下,可能存在脚本无法访问当前用户桌面会话的情况:

  • 打开任务计划程序,编辑目标任务的操作选项卡:
    • 确保"起始于"字段填写脚本所在的完整目录
    • 确认"使用最高权限运行"已勾选,且任务关联的用户为当前登录的管理员用户
  • 进入设置选项卡,取消勾选"如果任务运行时间超过指定时间就停止",避免脚本被强制终止

2. 屏幕分辨率不匹配

PyAutoGUI的图像识别依赖固定分辨率,任务计划程序运行时的分辨率可能与手动运行时不一致:

  • 在脚本开头添加DPI感知与分辨率锁定代码,确保运行环境分辨率统一:
    import ctypes
    user32 = ctypes.windll.user32
    user32.SetProcessDPIAware()  # 开启DPI感知,避免缩放影响识别
    
    # 强制设置分辨率为1920x1080(根据你的实际需求调整)
    devmode = ctypes.create_string_buffer(156)
    devmode[0] = 156
    user32.EnumDisplaySettingsW(None, 0, devmode)
    # 修改分辨率参数:宽度1920(0x0780)、高度1080(0x0438)
    ctypes.memmove(devmode + 104, b'\x00\x07\x80\x00', 4)
    ctypes.memmove(devmode + 108, b'\x00\x04\x38\x00', 4)
    user32.ChangeDisplaySettingsW(devmode, 0)
    
  • 重新截取所有用于图像识别的按钮、控件截图,确保与锁定的分辨率一致

3. Python环境路径错误

任务计划程序可能调用了系统默认Python环境,而非你手动使用的3.9版本:

  • 在任务的操作选项卡中,启动程序路径填写Python3.9的完整执行文件路径,比如C:\Python39\python.exe
  • 添加参数为脚本的完整路径,例如"D:\automation\script.py"
  • 确认"起始于"字段为脚本所在目录

4. UAC权限拦截

即使勾选"最高权限",UAC仍可能阻止脚本执行键鼠操作:

  • 打开本地组策略编辑器(gpedit.msc),依次进入计算机配置>Windows设置>安全设置>本地策略>安全选项
  • 找到"用户账户控制:以管理员批准模式运行所有管理员",设置为"已禁用"(注意:此操作会降低系统安全性,需谨慎评估)
  • 或者将脚本封装为批处理文件,任务计划程序执行批处理而非直接运行Python脚本:
    @echo off
    C:\Python39\python.exe "D:\automation\script.py"
    pause
    

5. 目标窗口未激活

脚本运行时未将目标程序窗口激活到前台,导致键鼠操作无效:

  • 在脚本开头添加窗口激活代码,确保操作对象处于前台:
    import pygetwindow as gw
    import time
    
    # 根据窗口标题定位目标程序
    target_win = gw.getWindowsWithTitle("目标程序窗口标题")[0]
    target_win.activate()
    time.sleep(2)  # 等待窗口完全激活
    

6. 日志排查定位

添加日志记录,精准定位脚本失败环节:

import logging
import pyautogui

logging.basicConfig(
    filename='automation_error.log',
    level=logging.DEBUG,
    format='%(asctime)s - %(levelname)s - %(message)s'
)

try:
    logging.info("自动化脚本启动")
    # 示例:图像识别步骤日志
    btn_pos = pyautogui.locateOnScreen('button.png', confidence=0.8)
    if btn_pos:
        logging.info(f"成功定位按钮:{btn_pos}")
        pyautogui.click(btn_pos)
    else:
        logging.error("未找到目标按钮")
except Exception as e:
    logging.error(f"脚本执行错误:{str(e)}", exc_info=True)

内容的提问来源于stack exchange,提问作者Caio Medeiros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:40:59