【问题标题】:How to check for the generated password using protractor?如何使用量角器检查生成的密码?
【发布时间】:2024-01-16 06:17:01
【问题描述】:

我有一个奇怪的场景:

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

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

【问题讨论】:

  • 更新了我的问题以关注您的更新。不知道为什么您需要在浏览器中实际打开电子邮件,邮件侦听器正在连接到您的电子邮件将使用的 imap 服务器......这是完全相同的事情。无论如何,如果您必须这样做,电子邮件页面将使用 HTML 进行结构化,因此您可以像通常那样使用元素定位器来解析电子邮件,但我会说很难以稳定的方式始终如一地遍历.
  • 其实我不知道这些mailCatcher 和mailTrap .. 遇到问题后只有你知道解决方案:P

标签: angularjs protractor ui-automation browser-automation


【解决方案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 host for microsoft exchange(或您使用的任何服务器)”或转到该电子邮件服务器的设置来找到它。

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

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

【讨论】:

  • 我按照您给出的邮件侦听器链接中的说明进行操作。但我没有得到任何结果。你能解释一下代码中发生了什么吗?我尝试运行相同的邮件侦听器代码,但它不工作
  • @Danny 我稍微更新了我的答案。有很多要回答的问题,但mail-listener 包负责处理大部分代码,所有电子邮件服务器都使用 imap 或 smtp。这个包只是简单地连接到没有 UI 的实际电子邮件服务器,它与实际用户用来访问他们的电子邮件的服务器相同。所以这段代码实际上只是传递凭据和一些配置选项(搜索过滤器,打开哪个收件箱等),而帮助程序负责实际解析电子邮件。
【解决方案2】:

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

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

MailHog,它是……!

【讨论】: