我正在使用带有量角器5.2.2和黄瓜3.2的量角器-黄瓜框架。我有要求在任何地点发布信息。因此,我为此编写了一个脚本。但是它在完成循环之前随机失败。因此,当脚本异常结束时,会有一个异常处理部分在退出之前获得控制权。由于Web驱动程序问题,NoSuchElementError,ElementIsNotIntractable,ElementIsNotVisible等任何原因,脚本可能会失败。要解决这个问题,如果失败,我必须发送电子邮件通知。我已尝试尝试捕获,如下所示,但这对我不起作用。
When(/^I login$/, function () {
try{
element(by.css(".signin")).click();
var count=post_details.length ;
for (var i=0; i<count; i++){
post();
}
}
catch(e){
console.log("failed");
}
});
如何在量角器黄瓜中做到这一点。谢谢!
答案 0 :(得分:0)
对于异常问题,您可以尝试此操作。 ignoreUncaughtException
对于电子邮件部分,创建一个hooks.js文件。在这里您可以设置After()函数,以检查您的方案是否成功。 Cucumber Docs。
示例:
After(function (scenario) {
if (scenario.result.status === Status.FAILED)
{
failed = true;
const attach = this.attach;
//creates a screenshot for the report
return browser.takeScreenshot().then(function(png) {
return attach(new Buffer(png, "base64"), "image/png");
});
}
});
然后,您可以使用nodemailer发送消息。 Nodemailer
在AfterAll()函数中,您可以处理发送部件。
示例:
AfterAll(function(callback){
console.log("AfterAll");
if (failed)
{
var transporter = nodemailer.createTransport(
{
host: 'host.com',
port: xx,
secure: false,
//proxy: 'http://10.10.10.6:1098',
auth: {
user: userMail,
pass: pw
}
});
var mailOptions = {
from: 'xx', // sender address (who sends)
to: xxxxxx@mail.com',
subject: 'your subject', // Subject line
text: 'Your test failed....', // plaintext body
/*attachments: [
{
filename: 'report.html',
path: htmlReport,
}]*/
};
transporter.sendMail(mailOptions, function(error, info)
{
if(error)
{
return console.log(error);
}
console.log('Email sent: ' + info.response);
console.log(info);
});
} else {
//do your stuff
}
setTimeout(callback, 2000);
});