我有一个奇怪的场景:
在我的自动化中,我必须创建一个用户。在创建时,将生成密码并将其发送到他/她的电子邮件ID。如何自动检索他/她的电子邮件中的密码(注意:我必须打开一个新窗口转到他/她的电子邮件并输入他/她的凭据并打开具有发送密码的特定邮件,复制它)并返回我的应用程序并使用他/她的用户名和密码登录?相当令人困惑的仪式
还有我如何切换到另一个标签(假设它不是一个角度应用程序), 并执行操作以输入其电子邮件的用户名和密码)
答案 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:
对于设置邮件监听器,链接问题中提供的代码几乎是我的复制/粘贴,username
,password
和host
除外。用户名/密码将与您尝试登录的用户相同。对于主机,它因电子邮件服务器而异。您应该能够通过谷歌搜索" imap主机进行微软交换(或您正在使用的任何服务器)"或转到该电子邮件服务器的设置。
我真正添加到该功能的其他代码是记录错误,这可能有助于识别您的问题以及您无法连接的原因。您可以将其放在配置文件的onPrepare()
函数中:
mailListener.on("error", function(err){
console.log(err);
});
答案 1 :(得分:0)
经过大量搜索和解决后,事实证明您必须模拟您的smtp服务器并将邮件发送到该服务器,以测试您的应用程序的邮件功能。为了让生活更轻松,有一些软件可用,如mailCatcher,mailLisetner。
但我的偏好是 mailHog 。它真的很容易设置(实际上只是下载.exe)并让你的应用程序发送邮件给它。它不需要任何花哨的安装步骤(如mailCatcher,安装它的人非常忙)或任何编码(如mailListener)。
MailHog,它是......!