Windows任务计划程序无法运行调用Python Selenium脚本的批处理文件
解决方案
- 优先排查会话隔离问题:Selenium调用的默认带界面的Chrome无法在任务计划程序的「不管用户是否登录都要运行」模式下运行,该模式会将程序放在无图形界面的会话0隔离环境执行。两种修复方式二选一:
- 任务常规设置页勾选「只在用户登录时运行」,且确保凌晨3点执行时设备处于登录状态
- 在Python的Selenium启动配置中添加Chrome无头模式参数,示例配置如下:
from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("--headless=new") # 适配Chrome 112及以上版本的无头模式 chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") # 启动WebDriver时传入配置即可:driver = webdriver.Chrome(options=chrome_options) - 修正批处理文件写法:拆分虚拟环境激活和脚本执行命令,同时添加日志输出方便定位问题,修改后的
test_bat.bat内容参考:@echo off :: 切换到批处理文件所在目录 cd /d C:\data_miner\Desktop :: 激活虚拟环境,必须加call命令否则批处理会在激活后直接终止 call C:\Users\data_miner\PycharmProjects\SeleniumScraper\venv\Scripts\activate.bat :: 执行Python脚本,同时将正常输出和错误日志都写入同目录的run_log.txt python C:\Users\data_miner\PycharmProjects\SeleniumScraper\ScraperWindows.py >> run_log.txt 2>&1 deactivate - 调整任务计划程序配置:
- 任务常规页勾选「使用最高权限运行」,避免权限不足无法调用Chrome驱动、读写文件
- 操作页的「程序/脚本」字段填写
cmd.exe,「添加参数」字段填写/c "C:\data_miner\Desktop\test_batch.bat",比直接调用bat文件兼容性更好 - 「起始于(可选)」字段填入
C:\data_miner\Desktop\,不要加引号
- 排查路径一致性问题:确认Python脚本内所有用到的文件、Chrome驱动路径都使用绝对路径,不要用相对路径,避免任务执行时工作目录不匹配导致资源读取失败
- 如上述操作均无效,可临时关闭设备杀毒软件/安全防护后手动运行任务测试,部分安全软件会拦截任务计划程序调用的脚本执行
内容的提问来源于stack exchange,提问作者Jose_harkhan
相关产品推荐
相关产品推荐

