我们如何在量角器黄瓜中进行异常处理并发送电子邮件通知

时间:2018-09-21 10:08:16

标签: protractor cucumber

我正在使用带有量角器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");
  }
});

如何在量角器黄瓜中做到这一点。谢谢!

1 个答案:

答案 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);
});