如何在任务计划程序中以任务形式运行C#开发的Selenium项目
C# Selenium项目生成可执行文件+配置每日定时运行实操方案
一、生成可运行的exe文件
- 首先确认项目模板是控制台应用,类库项目没法直接生成可执行文件,控制台模板最适配无人值守的自动化场景。
- 提前修正代码里的硬编码问题:
- 浏览器驱动路径不要写死本地绝对路径,统一用相对路径获取程序运行目录,示例代码:
var driverPath = AppDomain.CurrentDomain.BaseDirectory; var options = new ChromeOptions(); // 无人值守建议加无头参数,后台运行不弹窗口 options.AddArgument("--headless=new"); options.AddArgument("--disable-gpu"); using var driver = new ChromeDriver(driverPath, options); - 所有自定义配置(目标网址、账号信息、等待时长等)统一放到
App.config(.NET Framework)或appsettings.json(.NET Core/.NET 5+)中,不要硬编码在代码里,后续改配置不用重新编译。 - 确认所有NuGet依赖(Selenium.WebDriver、对应浏览器的驱动包等)版本一致,没有冲突。
- 浏览器驱动路径不要写死本地绝对路径,统一用相对路径获取程序运行目录,示例代码:
- 编译生成exe:
- 如果你用的是.NET Framework:把Visual Studio顶部的编译配置从
Debug切换到Release,右键项目选择「生成」,编译完成后打开项目文件夹下的bin/Release目录,里面的exe就是编译好的主程序,记得把同目录下的dll、驱动文件、配置文件全部保留,不要单独只拷exe走。 - 如果你用的是.NET Core/.NET 5+:右键项目选择「发布」,目标选「文件夹」,选一个固定的输出路径;部署模式如果目标机器已经装了对应.NET运行时就选「框架依赖」,体积更小;如果不想在目标机器装运行时就选「独立」,目标运行时选
win-x64,勾选「生成单个文件」,点击发布即可得到独立exe。
- 如果你用的是.NET Framework:把Visual Studio顶部的编译配置从
- 本地验证:找到生成的exe,双击运行一次,确认Selenium能正常拉起浏览器、走完所有业务流程、没有报错,再做后续配置。
二、配置Windows任务计划程序实现每日自动运行
- 前置准备:把编译好的整个程序文件夹放到无中文、无空格、无特殊字符的固定路径下,比如
D:\\SeleniumAutoTask\\,不要放在桌面、C盘用户目录,避免权限问题导致读取失败。 - 创建任务步骤:
- 按
Win+R输入taskschd.msc回车,打开任务计划程序,不要用右侧的「创建基本任务」,直接选「创建任务」,基础任务默认权限不足很容易运行失败。 - 「常规」页配置:
- 填好任务名称,比如「每日Selenium自动化任务」
- 安全选项选择「不管用户是否登录都要运行」,勾选「使用最高权限运行」,避免UAC拦截、用户锁屏/未登录时任务不触发
- 「配置」下拉框选当前机器对应的系统版本即可
- 「触发器」页配置:
- 点击「新建」,触发条件选「按计划」,设置为每日,选好你需要的运行时间,勾选「已启用」后确定。如果需要间隔重复运行,可以在高级设置里调整重复间隔。
- 「操作」页配置:
- 点击「新建」,操作类型选「启动程序」,程序路径浏览选中你准备好的exe文件,重点:「起始于(可选)」输入框必须填写exe所在的文件夹路径,比如exe路径是
D:\\SeleniumAutoTask\\task.exe,这里就填D:\\SeleniumAutoTask\\,不填的话程序运行时工作目录错误,会找不到配置文件、驱动,直接崩溃。
- 点击「新建」,操作类型选「启动程序」,程序路径浏览选中你准备好的exe文件,重点:「起始于(可选)」输入框必须填写exe所在的文件夹路径,比如exe路径是
- 「条件」页配置:
- 取消勾选「只有计算机使用交流电源时才启动此任务」,避免笔记本用电池时任务不跑
- 有需要的话可以勾选「唤醒计算机运行此任务」
- 「设置」页配置:
- 勾选「允许按需运行任务」,方便手动测试
- 设置任务超时停止时间,比如1小时,避免Selenium异常卡住导致进程一直占用资源
- 配置失败重启规则:比如失败后每1分钟重试一次,最多重试3次,规避偶发的网络波动、驱动启动失败问题
- 按
- 验证:配置完成后,在任务计划程序库找到刚创建的任务,右键选择「运行」,确认程序可以正常执行完流程,后续到设定时间就会自动触发运行。
踩坑提示:如果没开浏览器无头模式,用户锁屏、未登录状态下Selenium拿不到桌面UI句柄会直接崩溃,无人值守场景一定要给浏览器加无头启动参数。
内容的提问来源于stack exchange,提问作者Naor Pashay
相关产品推荐
相关产品推荐

