我正在尝试将.png文件附加到将通过Protractor运行的期望/规格失败时通过nodemailer 发送的邮件。 值得一提的是我使用protractor-jasmine2-screenshot-reporter进行截图捕获。
我在做什么:
browser.driver.wait(function() {
return helper.checkURLAddress(browser.params.Test.URL.mojOLX); //will return false
}, 2000)
.then(function() {
// success code
},
//failure code goes below
function() {
var htmlFilePath = 'D:/Test/target/screenshots/my-report.html';
var htmlFileContent = String(fs.readFileSync(htmlFilePath));
var screenshotDirectory = "D:/Test/target/screenshots/chrome";
helper.sendHTMLMail(htmlFileContent, helper.getMostRecentFileName(screenshotDirectory));
}
获取最新文件的功能:
function getMostRecentFileName(dir) {
var files = fs.readdirSync(dir);
return _.max(files, function (f) {
var fullpath = path.join(dir, f);
return fs.statSync(fullpath).ctime;
});
}
带附件的mailOptions:
var mailOptions = {
//from, to, subject go here
attachments: {
path: htmlFilePath
}
};
我得到的错误是: 错误:ENOENT:没有这样的文件或目录,打开'D:/Test/Screenshotname.png'。
屏幕截图的文件路径实际上是错误的,并且在路径中缺少3个目录以获取PNG(目标,屏幕截图,镶边)。
我认为这是由于未创建的目录,如thread中所述。但是这里的解决方案是等待用户完成的pdf创建,这不是这里的情况。
什么时候截图保存? 为什么函数不使用它在错误中显示的文件?
已编辑问题: 如何在创建屏幕截图后调用sendHTMLMail?