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

时间:2016-09-22 14:42:14

标签: angularjs protractor ui-automation browser-automation

我有一个奇怪的场景:

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

还有我如何切换到另一个标签(假设它不是一个角度应用程序), 并执行操作以输入其电子邮件的用户名和密码)

2 个答案:

答案 0 :(得分:1)

对于电子邮件,您可以使用名为mail-listener的包。您可以按照this answer上的说明操作,我自己完成了这项工作,并且设置相对简单。然后,您可以从已解析的电子邮件中获取密码。

就切换到其他标签而言,您可以使用getAllWindowHandles(),如下所示:

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

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

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

修改 要通过量角器自己打开新标签,可以使用executeScript()。即。

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

编辑2: 对于设置邮件监听器,链接问题中提供的代码几乎是我的复制/粘贴,usernamepasswordhost除外。用户名/密码将与您尝试登录的用户相同。对于主机,它因电子邮件服务器而异。您应该能够通过谷歌搜索" imap主机进行微软交换(或您正在使用的任何服务器)"或转到该电子邮件服务器的设置。

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

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

答案 1 :(得分:0)

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

但我的偏好是 mailHog 。它真的很容易设置(实际上只是下载.exe)并让你的应用程序发送邮件给它。它不需要任何花哨的安装步骤(如mailCatcher,安装它的人非常忙)或任何编码(如mailListener)。

MailHog,它是......!