selenium定时运行
时间: 2024-12-26 12:22:53 浏览: 3
### 配置 Selenium 定时任务自动化测试调度
#### 使用 Jenkins 实施持续集成并触发自动化测试
Jenkins 是一种流行的开源自动化服务器,适用于实施持续集成 (CI) 和持续交付 (CD)[^1]。对于希望在开发提交新代码后立即验证其质量的团队来说非常有用。
- **安装与配置**
- 下载并安装 Jenkins。
- 创建一个新的自由风格软件项目。
- 添加源码管理部分,指定 Git 或其他版本控制系统中的仓库地址。
- **构建触发器设定**
- 可以选择“轮询 SCM”,定义间隔时间来检查是否有新的更改被推送到远程库中。
- 当检测到变化时,则会自动启动一次完整的编译过程以及后续关联的任务链路操作,比如运行单元测试、功能测试等。
```groovy
pipeline {
agent any
triggers {
pollSCM('H/5 * * * *')
}
stages {
stage('Run Tests') {
steps {
sh 'python3 run_tests.py'
}
}
}
}
```
#### Linux Crontab 设置定时执行 Python 脚本
另一种方式是在 Linux 系统上利用 `cron` 来安排定期作业计划表[Cron](https://en.wikipedia.org/wiki/Cron),它允许用户按照固定的时间间隔执行命令或脚本[^2]。
- 打开终端输入 `crontab -e` 编辑当前用户的 cron 表格。
- 输入如下格式的一行或多行指令:
```bash
* * * * * command_to_be_executed
# ┬ ┬ ┬ ┬ ┬
# │ │ │ │ │
# │ │ │ │ └───── day of week (0 - 7) (Sunday=0 or 7)
# │ │ │ └────────── month (1 - 12)
# │ │ └─────────────── day of month (1 - 31)
# │ └────────────────── hour (0 - 23)
# └──────────────────── minute (0 - 59)
# Example to execute a python script every midnight:
0 0 * * * /usr/bin/python3 /path/to/test_script.py >> /var/log/cron.log 2>&1
```
此设置将在每天午夜零点整调用位于 `/path/to/test_script.py` 的Python 测试脚本,并把标准输出重定向至日志文件以便日后审查错误信息。
#### 夜间无人值守模式下的自动化测试
为了最大化资源利用率和减少人工干预的需求,可以考虑将大部分耗时较长的大规模回归测试放在夜晚非工作时段内完成[^3]。这不仅有助于避开白天高峰期可能遇到的各种干扰因素,而且还可以充分利用闲置计算能力来进行更为全面深入的质量保障活动。
#### 结合 PyTest 发送测试报告邮件通知
一旦完成了所有的测试案例执行之后,可以通过编写自定义插件或者修改现有的 conftest 文件向相关人员分发带有最新一轮结果汇总的数据报表[^4]。这种方式能够及时有效地传达有关产品质量状态的重要情报给利益相关者们知晓。
```python
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def send_email(report_path):
sender = "your-email@example.com"
receivers = ["receiver@example.com"]
msg = MIMEMultipart()
msg['Subject'] = '[Automation Report]'
msg['From'] = sender
msg['To'] = ", ".join(receivers)
with open(report_path, 'r', encoding='utf8') as f:
body = f.read()
part = MIMEText(body, 'html')
msg.attach(part)
try:
server = smtplib.SMTP_SSL('smtp.example.com', 465)
server.login(sender, "password")
server.sendmail(sender, receivers, msg.as_string())
print("Successfully sent email")
except Exception as e:
print(f"Failed to send email {str(e)}")
finally:
server.quit()
@pytest.hookimpl(tryfirst=True)
def pytest_sessionfinish(session, exitstatus):
report_file = './test_cases/report.html' # Replace this path according to your project structure.
send_email(report_file)
```
阅读全文