如何使用量角器检查生成的密码?

How to check for the generated password using protractor?

我有一个奇怪的场景:

在我的自动化中,我必须创建一个用户。创建时,将生成一个密码并将其发送到 his/her 电子邮件 ID。我如何自动检索 his/her 电子邮件中的密码( 注意:我必须打开一个新的 window 才能转到 his/her 电子邮件并输入 his/her凭据并打开具有已发送密码的特定邮件并复制它 ) 然后返回我的应用程序并使用 his/her 用户名和密码登录?相当混乱的仪式

以及如何切换到另一个选项卡(假设它不是 angular-app), 并执行操作以输入他电子邮件的用户名和密码)

对于电子邮件,您可以使用一个名为 mail-listener 的包。您可以按照上的说明进行操作,我自己已经完成并且设置起来相对容易。然后就可以从解析出来的邮件中得到密码了。

至于切换到其他选项卡,您可以使用 getAllWindowHandles(),如下所示:

browser.getAllWindowHandles().then(function (handles) {
   newWindowHandle = handles[1];
   browser.switchTo().window(newWindowHandle).then(function () {
       // do stuff
   });
});

因为它不是 Angular 页面,您需要设置 browser.ignoreSynchronization = true。您可以在切换 window 句柄时在函数中执行此操作,或者您甚至可能想在该步骤之前执行此操作。您需要使用一些 Expected Conditions 来控制测试流程。在非Angular页面上找到您需要与之交互的必要元素,即:

var EC = protractor.ExpectedConditions;     
var el = element(by.id('loginForm'));
browser.wait(EC.visibilityOf(el));
// do stuff

编辑: 要通过 Protractor 自己打开一个新选项卡,您可以使用 executeScript()。即

browser.executeScript("window.open('http://www.google.com')");

编辑 2: 对于设置邮件侦听器,链接问题中提供的代码对我来说几乎是 copy/paste,除了 usernamepasswordhost。 username/password 将是您尝试登录的同一用户。对于主机,它因电子邮件服务器而异。您应该能够通过谷歌搜索 "imap host for microsoft exchange (or whatever server you are using)" 或转到该电子邮件服务器的设置找到它。

我真正添加到该函数的其他代码只是记录错误,这可能有助于确定您的问题以及无法连接的原因。您可以将其放入配置文件的 onPrepare() 函数中:

mailListener.on("error", function(err){
    console.log(err);
});

经过大量的搜索和理解,事实证明你必须模拟你的 smtp 服务器并向该服务器发送邮件,以测试你的应用程序的邮件功能。为了让生活更轻松,可以使用一些软件,例如 mailCatcher、mailLisetner。

但我更喜欢 mailHog。它真的很容易设置(实际上只需下载 .exe)并让您的应用程序向它发送邮件。它不需要任何花哨的安装步骤(比如 mailCatcher,安装它真的很忙)或任何编码(比如 mailListener)。

MailHog,它是...!