如何设置基于Java+TestNG框架的Selenium脚本每周固定时间自动运行?
Java+TestNG Selenium脚本定时执行可行方案汇总
方案1:操作系统原生定时任务(轻量化无额外依赖)
- Windows环境:使用任务计划程序
- 先通过
mvn package(搭配maven-assembly-plugin)或者Gradle打包命令,把脚本打成包含所有依赖的可执行jar包 - 打开系统任务计划程序,新建基本任务,触发器设置为「每周」,勾选需要执行的日期、设置指定执行时间
- 操作项选择「启动程序」,程序路径选本地java.exe路径,参数填写
-jar 你的jar包绝对路径
- 先通过
- Linux/macOS环境:使用crontab
- 打好可执行jar包后上传到服务器指定目录
- 执行
crontab -e编辑定时规则,比如要每周三、周五上午9点执行,规则写为:0 9 * * 3,5 /usr/bin/java -jar /opt/你的脚本包路径.jar >> /opt/执行日志路径.log 2>&1 - 保存后规则自动生效,无需额外部署服务
方案2:CI/CD工具定时触发(适配已有流水线的场景)
如果代码已经托管到Git仓库,直接用现有CI工具即可实现,不需要额外开发:
- Jenkins:
- 新建Maven/自由风格项目,配置代码仓库地址、JDK、Maven环境
- 构建触发器勾选「Build periodically」,填入对应cron表达式,比如每周一、周四晚8点执行填
0 20 * * 1,4 - 构建步骤设置执行
mvn test命令即可,平台自带测试报告生成、失败告警能力
- GitLab CI/GitHub Actions:
- 项目根目录新增对应CI配置文件,配置pipeline触发规则为
schedule,填写cron表达式和执行分支 - 配置执行步骤为安装JDK、执行测试命令,执行结果直接在CI平台查看
- 项目根目录新增对应CI配置文件,配置pipeline触发规则为
方案3:Java代码内置定时任务(高灵活性场景)
不需要依赖外部工具,直接在项目内嵌入调度逻辑:
- 引入调度依赖:普通Java项目用Quartz,Spring项目直接用内置的Spring Scheduling
- 配置定时规则,比如Spring Scheduling场景,加注解
@Scheduled(cron = "0 0 10 ? * 2,6")即可实现每周二、周六上午10点触发 - 触发后调用TestNG原生API执行用例,示例代码:
import org.testng.TestNG; import java.util.Collections; public class ScheduledTestRunner { public void runSeleniumTest() { TestNG testNG = new TestNG(); testNG.setTestSuites(Collections.singletonList("src/main/resources/testng.xml")); testNG.run(); } }
该方案需要Java进程常驻后台运行,适合部署在服务器长期运行的服务中
选型建议
- 临时使用、无额外配套需求:选操作系统原生定时任务,部署成本最低
- 已有CI/CD工具栈:选CI定时触发,自带日志、报告、告警能力,无需额外开发
- 需要加自定义触发前后逻辑、和内部系统打通:选Java内置定时任务,灵活性最高
内容的提问来源于stack exchange,提问作者AnkitKumarSahoo
相关产品推荐
相关产品推荐

