当前位置: 首页 > 面试题库 >

在量角器测试用例中从电子邮件中获取值

颜畅
2023-03-14
问题内容

我需要测试一个量角器测试用例,在该用例中,用户注册,接收电子邮件,转到电子邮件中提供的链接,并在激活注册表单中填写他/她的详细信息。

问题是如何从电子邮件中获取兑换令牌。我的电子邮件具有指向激活页面的链接,该页面具有auth令牌,如下所示:

http://127.0.0.1:3000/#/signup/redeem/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJlOTRhYzY3MC1kYTNlLTQyYTUtODVkZS02NDU4ZjVmZGMwYjAiLCJzdWIiOiJ0ZXN0QGNvZWYuY28iLCJpYXQiOjE0Mjc0OTM5MDMsImV4cCI6MTQyODA5ODcwM30.

但是,如何获取该令牌以便构建URL或如何单击电子邮件中的该按钮以完成流程?我正在使用mailcatcher模拟电子邮件。


问题答案:

这是我最近解决的问题。希望该解决方案也适用于您的用例。

先决条件:

  • mail-listener2
  • 对概念的理解 promises

分步说明:

  1. 安装mail-listener2
        npm install mail-listener2 --save-dev
  1. 在量角器配置中, 初始化Mail Listener 并使其全局可用:
        onPrepare: function () {
        var MailListener = require("mail-listener2");

        // here goes your email connection configuration
        var mailListener = new MailListener({
            username: "imap-username",
            password: "imap-password",
            host: "imap-host",
            port: 993, // imap port 
            tls: true,
            tlsOptions: { rejectUnauthorized: false },
            mailbox: "INBOX", // mailbox to monitor 
            searchFilter: ["UNSEEN", "FLAGGED"], // the search filter being used after an IDLE notification has been retrieved 
            markSeen: true, // all fetched email willbe marked as seen and not fetched next time 
            fetchUnreadOnStart: true, // use it only if you want to get all unread email on lib start. Default is `false`, 
            mailParserOptions: {streamAttachments: true}, // options to be passed to mailParser lib. 
            attachments: true, // download attachments as they are encountered to the project directory 
            attachmentOptions: { directory: "attachments/" } // specify a download directory for attachments 
        });

        mailListener.start();

        mailListener.on("server:connected", function(){
            console.log("Mail listener initialized");
        });

        global.mailListener = mailListener;
    }),

    onCleanUp: function () {
        mailListener.stop();
    }, 
  1. 创建一个帮助getLastEmail()函数,该函数将等待email检索到:
        function getLastEmail() {
        var deferred = protractor.promise.defer();
        console.log("Waiting for an email...");

        mailListener.on("mail", function(mail){
            deferred.fulfill(mail);
        });
        return deferred.promise;
    };
  1. 测试用例示例:
        describe("Sample test case", function () {

        beforeEach(function () {
            browser.get("/#login");
            browser.waitForAngular();
        });

        it("should login with a registration code sent to an email", function () {
            element(by.id("username")).sendKeys("MyUserName");
            element(by.id("password")).sendKeys("MyPassword");
            element(by.id("loginButton")).click();

            browser.controlFlow().await(getLastEmail()).then(function (email) {
                expect(email.subject).toEqual("New Registration Code");
                expect(email.headers.to).toEqual("myemail@email.com");

                // extract registration code from the email message
                var pattern = /Registration code is: (\w+)/g;
                var regCode = pattern.exec(email.text)[1];

                console.log(regCode);

             });
        });
    });


 类似资料:
  • 我正在尝试从GitHub获取一个用户的电子邮件地址,我只是在使用Postman测试过程。我有一个令牌,它有user和user:email作用域,点击https://api.github.com/user可以得到用户的信息。私人电子邮件在该endpoint不可见,所以我也点击https://api.github.com/user/emails。电子邮件endpoint给了我一个404。 与404一起

  • 在Jenkins作业配置中,我在构建部分的命令窗口中编写了一个bat脚本。在其中一个脚本命令中,我将环境变量设置为服务器计算机中的系统环境变量,如下所示: 我现在的任务是将这个环境变量值返回给Jenkins,并将其包含在我的构建后通知电子邮件内容中。有简单的方法吗? 在我的研究中,我遇到了插件envInject,但我认为它用于设置环境变量,对吗? 更新1: 事实证明,该变量可以通过电子邮件内容中的

  • 我一直试图获取电子邮件正文与imap_fetchbody($stream,$msgno,$选项),但没有成功。 然后我尝试使用imap_fetchstructure($stream,$msgno),并使用各自的子类型手动解码每种类型,如:- 对于前两个,我可以用这样的东西来解码 但说到混合,我要么不知道,要么我该怎么办,要么我在哪里犯错。

  • 在上一章中,我们学习了如何查看电子邮件。 现在让我们看看如何获​​取每封电子邮件并阅读其内容。 让我们编写一个Java类FetchingEmail ,它将读取以下类型的电子邮件: 简单邮件 电子邮件附件 使用内联图片发送电子邮件 代码中遵循的基本步骤如下: 获取Session对象。 创建POP3商店对象并连接到商店。 创建文件夹对象并在邮箱中打开相应的文件夹。 检索邮件。 分别关闭文件夹和存储对象

  • 我正在使用Angular 9、Node v14和e2e测试,使用Cucumber、量角器和量角器Cucumber框架。 量角器。conf.js tsconfig。e2e。json 发射json package.json 我可以在VSCode中启动调试器,但问题是每个断点都是未绑定的断点。 我还尝试在tsconfig中添加。e2e。json和我也尝试加入launch。json 问题似乎是ts节点在内

  • 我正在尝试通过AngularFire和A使用Firebase实现一些简单的使用注册ngular.js.我正在使用SimpleLogin工具来管理用户。我可以很好地创建用户。 很有魅力。为了在用户登录时获取此信息,我尝试在$rootscope上实现一个事件处理程序。我希望它搜索我存储的uid,然后给我记录正确的用户信息。 为了使用start At和endAt,我是否必须建立$优先级。当我尝试时,我得