javascript - 邮件监听器偶尔无法通过身份验证

标签 javascript email selenium protractor email-client

问题:

我们有多个测试,我们需要实际检查测试用户的电子邮件作为测试用例步骤。这用于双因素身份验证和电子邮件通知测试。

目前,我们使用提供的解决方案here这是基于 mail-listener2 node package .这是我们使用的配置:

email: {
    username: "user email here",
    password: "user password here",
    host: "smtp server address here",
    port: 993,
    tls: true,
    mailbox: "Inbox",
    markSeen: true
},

我们在 onPrepare() 函数内的 Protractor 配置中初始化邮件监听器:

var MailListener = require("mail-listener2");
var mailListener = new MailListener(config.email);

mailListener.start();

mailListener.on("server:connected", function(){
    console.log("Mail listener initialized");
});

global.mailListener = mailListener;

问题是 - 在大约 10% 的情况下,邮件监听器会失败并显示以下错误消息:

Timed out while authenticating with server

问题:

是什么导致了这个问题,我们可以做些什么来使邮件监听器正常工作?另外,是否可以在失败时重试身份验证?

最佳答案

这是一个异步问题。您的邮件监听器正在尝试检查事件“server:connected”。由于这是异步的,因此这可能会或可能不会及时发生。您应该尝试做的是将其包装在一个 promise 中,并在“server:connected”事件之后解决。

onPrepare: {
  return new Promise((resolve, reject) => {
    var MailListener = require("mail-listener2");
    var mailListener = new MailListener(config.email);

    mailListener.start();

    mailListener.on("server:connected", function(){
      console.log("Mail listener initialized");
      resolve();
    });

    // if you run into an error on connecting to the server,
    // maybe reject the promise here.
    mailListener.on("error", (err) => {
      reject(err);
    });

    global.mailListener = mailListener;
  });
}

关于javascript - 邮件监听器偶尔无法通过身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41287150/

相关文章:

javascript - 在JavaScript中删除最后一个逗号之前的文本

Javascript Date() 给出错误的值

parsing - 在javamail中解析电子邮件中的 "from"地址

PHP 邮件功能有时会起作用

c# - 日语电子邮件主题编码

java - 使用 TestNG 编程逻辑

c# - 在 Visual Studio 中使用 C# 和 ChromeDriver 进行 MS 测试的 Selenium WebDriver

javascript - PhantomJS 网页内存消耗?

selenium - 单击下拉列表中的特定元素

javascript - 查找 Farbtastic 颜色选择器当前值