我们如何在量角器黄瓜中进行异常处理并进行电子邮件通知
How we do Exception handling in protractor-cucumber and do a email notification
我正在使用带有量角器 5.2.2 和黄瓜 3.2 的 Protractor-Cucumber 框架。我需要在 no.of 个位置发帖。所以我为它写了一个循环脚本。但它在完成循环之前随机失败。因此,当脚本异常结束时,是否有一个异常处理部分在 exiting.The 脚本可能由于网络驱动程序问题、NoSuchElementError、ElementIsNotIntractable、ElementIsNotVisible etc.So 等任何原因而失败之前获得控制权 etc.So 不管是什么这个问题我必须处理,如果它失败了,我必须做一个电子邮件通知。我尝试了 try catch,如下所示,但它对我不起作用。
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");
}
});
我们如何在量角器中做到这一点-cucumber.Thanks提前
异常问题可以试试这个。 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);
});
我正在使用带有量角器 5.2.2 和黄瓜 3.2 的 Protractor-Cucumber 框架。我需要在 no.of 个位置发帖。所以我为它写了一个循环脚本。但它在完成循环之前随机失败。因此,当脚本异常结束时,是否有一个异常处理部分在 exiting.The 脚本可能由于网络驱动程序问题、NoSuchElementError、ElementIsNotIntractable、ElementIsNotVisible etc.So 等任何原因而失败之前获得控制权 etc.So 不管是什么这个问题我必须处理,如果它失败了,我必须做一个电子邮件通知。我尝试了 try catch,如下所示,但它对我不起作用。
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");
}
});
我们如何在量角器中做到这一点-cucumber.Thanks提前
异常问题可以试试这个。 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);
});