如何使用量角器检查生成的密码?
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,除了 username
、password
和 host
。 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,它是...!
我有一个奇怪的场景:
在我的自动化中,我必须创建一个用户。创建时,将生成一个密码并将其发送到 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,除了 username
、password
和 host
。 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,它是...!