如何通过MS任务计划器实现Robot Framework测试完成后发含报告快照的邮件?
当然可行!我之前帮团队落地过几乎一模一样的需求,下面给你拆解具体的实现步骤,照着来就能搞定:
具体实现方案
一、先确保Robot Framework能生成稳定的测试报告
- 你的Robot脚本运行后,默认会产出
report.html和log.html,这一步没问题。但要注意任务计划器的工作目录设置,最好把报告指定生成在固定路径(比如D:\RobotTests\Results\),避免后续步骤找不到文件。
二、生成报告快照(HTML转图片)
直接发HTML附件可能会被部分邮件客户端拦截或显示异常,转成图片嵌入邮件更稳妥。这里用Windows环境下易部署的命令行工具:
- 用
wkhtmltoimage(开源HTML转图片工具),把它放到固定路径(比如D:\Tools\wkhtmltoimage.exe)。 - 在批处理里加一行命令即可生成快照:
这个命令会把报告转成宽1200px的PNG图,刚好适配邮件阅读。D:\Tools\wkhtmltoimage.exe --width 1200 D:\RobotTests\Results\report.html D:\RobotTests\Results\report_snapshot.png
三、批处理整合全流程
把「跑测试→生成快照→发邮件」整合成一个批处理文件(比如RunTestsAndSendMail.bat),代码示例如下:
@echo off :: 1. 执行Robot测试脚本,指定报告输出目录 robot --outputdir D:\RobotTests\Results D:\RobotTests\TestCases\YourTestSuite.robot :: 2. 生成报告快照 D:\Tools\wkhtmltoimage.exe --width 1200 D:\RobotTests\Results\report.html D:\RobotTests\Results\report_snapshot.png :: 3. 用PowerShell发送带内嵌图片的邮件(Windows自带,无需额外工具) PowerShell -Command "& { $smtpServer = 'smtp.yourcompany.com' $smtpPort = 587 $smtpUser = 'your-email@company.com' $smtpPass = 'your-app-token-or-password' $to = 'product-team@company.com' $subject = 'Robot Framework测试报告 - ' + (Get-Date -Format 'yyyy-MM-dd HH:mm:ss') $body = '<p>您好,本次自动化测试已完成,测试报告快照如下:</p><img src=""cid:reportSnapshot"" />' $attachment = New-Object System.Net.Mail.Attachment('D:\RobotTests\Results\report_snapshot.png') $attachment.ContentId = 'reportSnapshot' $mail = New-Object System.Net.Mail.MailMessage($smtpUser, $to, $subject, $body) $mail.IsBodyHtml = $true $mail.Attachments.Add($attachment) $smtp = New-Object System.Net.Mail.SmtpClient($smtpServer, $smtpPort) $smtp.EnableSsl = $true $smtp.Credentials = New-Object System.Net.NetworkCredential($smtpUser, $smtpPass) $smtp.Send($mail) $attachment.Dispose() }"
- 记得替换里面的SMTP服务器、邮箱账号、收件人等信息;如果公司用Exchange邮箱,也可以调整PowerShell命令适配Exchange协议。
- 密码不要直接写明文,建议用Windows凭据管理器存储,或者生成邮箱的应用专用密码(比如Outlook、Gmail都支持)。
四、配置MS任务计划器
打开任务计划器创建基本任务:
- 触发器:设置你需要的测试执行时间(比如每天凌晨2点)
- 操作:选择启动程序,指定你的批处理文件
RunTestsAndSendMail.bat - 关键设置:在「常规」选项卡勾选不管用户是否登录都要运行,并设置最高权限(避免权限不足导致报告生成失败或邮件发送失败);在「操作」的「起始于」里填批处理所在的目录,确保路径识别正确。
几个实用注意事项
- 先单独运行批处理测试每一步:确认Robot能生成报告、快照能正常产出、邮件能成功发送,再配置任务计划器。
- 可以给批处理加日志输出,比如在每一行命令后加
>> D:\RobotTests\Logs\run.log 2>&1,方便后续排查任务计划器运行时的问题。 - 如果觉得转图片麻烦,也可以直接把
report.html作为附件发送,但部分邮件客户端可能会拦截HTML附件,转图片更稳妥。
内容的提问来源于stack exchange,提问作者scttech
相关产品推荐
相关产品推荐

