gpt4 book ai didi

javascript - 如何登录gmail帐户并在 Protractor 中阅读邮件而不使用浏览器

转载 作者:行者123 更新时间:2023-12-01 01:56:23 27 4
gpt4 key购买 nike

我有一个场景,我需要登录 Gmail 帐户并阅读内容或消息。然后需要从该消息中获取 URL。我可以使用 Protractor 中的浏览器来完成此操作。但问题是 Gmail 帐户启用了 2FA。我使用核心 Selenium 实现了这一点,它具有使用 IMAP 协议(protocol)登录 gmail 帐户的 jar 文件。

有人可以给我一个好的解决方案吗?

最佳答案

您可以使用 mail-listener2 npm 包在 Protractor 测试中读取来自 Gmail 的电子邮件。检查下面的示例代码。

ma​​ilListener.ts

const MailListenerClient = require("mail-listener2");
const cheerio = require('cheerio');
const simpleParser = require('mailparser').simpleParser;
export class MailListener {

public mailListener:any;

constructor() {
this.mailListener = new MailListenerClient({
username: "username@gmail.com",
password: "password",
host: "imap.gmail.com",
port: 993,
tls: true,
mailbox: "INBOX",
searchFilter: ["UNSEEN", ["FROM", "fromemail@gmail.com"],["SUBJECT","subject of the email"]],
/*it will search for are "unseen" mail send from "fromemail@gmail.com" with subject "fromemail@gmail.com"*/
connTimeout: 10000,
authTimeout: 5000,
markSeen: true,
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/"},
debug : console.log
});
}

init() {
this.mailListener.start();
}

close() {
this.mailListener.stop();
}


getLinkFromEmail() {
var self = this;
return new Promise((resolve, reject) => {
self.mailListener.on("mail", function (mail) {
/*simpleParser is used to convert string to HTML format*/
simpleParser(mail.eml).then(function (parsedEmail) {
var html = parsedEmail.html;
/* cheerio is used to write query on parsed HTML content
* refer https://www.npmjs.com/package/cheerio
*/
resolve(cheerio.load(html)("a").attr("href"));
});
});

self.mailListener.on("error", function (err) {
reject(err);
});
});
}

}

测试.ts

import {MailListener} from "mailListner";

describe("Read email from gmail using imap", function () {
let mailListener = new MailListener();

beforeAll(function(){
mailListener.init();
});

afterAll(function(){
mailListener.close();
})

it("Test email recieved",function(){
let urlFromEmail = mailListener.getLinkFromEmail();

/*Perform some action on UI that triggers email.(Just for example im doing it)*/
element(by.id("email")).sendKeys("email@gmail.com");
element(by.buttonText("Send Email")).click();
expect(urlFromEmail).toEqual("some link");
})
});

我已经用 typescript 编写了代码,希望您可以用 javascript 重写相同的代码。让我知道这是否清楚或者我是否需要在代码中添加更多详细信息。

关于javascript - 如何登录gmail帐户并在 Protractor 中阅读邮件而不使用浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51006449/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com