gpt4 book ai didi

javascript - Protractor 端到端测试;验证帐户激活电子邮件

转载 作者:行者123 更新时间:2023-11-30 20:47:54 24 4
gpt4 key购买 nike

我正在尝试创建用于电子邮件验证的脚本。我的意思是当我们在网站上创建一个帐户时,验证邮件将发送到给定的邮件地址,然后我们必须转到该邮件并验证它(单击链接/或获取代码)。我试过 this solution .但我一直卡在特定错误上。

这是我正在尝试的代码。

describe("Sample test case", function () {

function getLastEmail() {
let deferred = protractor.promise.defer();
console.log("Waiting for an email...");

mailListener.on("mail", function(mail){
deferred.fulfill(mail);
});
return deferred.promise;
}


beforeAll(function () {
browser.waitForAngularEnabled(false);
browser.get("https://mail.google.com/mail/");
isAngularSite(false);
browser.sleep(3000);
});

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

browser.controlFlow().await(getLastEmail()).then(function (email) {
expect(email.subject).toEqual("BillPledge Email Verification");
expect(email.headers.to).toEqual("support@billpledge.com");

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

console.log(regCode);

});
});

});

这是我的配置文件。

// An example configuration file.

exports.config = {
// The address of a running selenium server.
// seleniumAddress: 'http://localhost:4444/wd/hub',

// if we are using protractor's webdriver-manager locally, you cannot use selenium Address
// If the webdriver-manager needs to start a local server, you can use
selenium: 'http://localhost:4445/wd/hub',
seleniumPort: 4445, // Port matches the port above

// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'chrome'
},

// Spec patterns are relative to the current working directly when
// protractor is called.
specs: ['./e2eTest/GmailTest.js'],

// Options to be passed to Jasmine-node.
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 300000
},

allScriptsTimeout: 200000,


onPrepare: function () {
global.isAngularSite = function (flag) {
browser.ignoreSynchronization = !flag;
};

browser.driver.manage().window().maximize();

//To generate the report.
let HtmlReporter = require('protractor-beautiful-reporter');
jasmine.getEnv().addReporter(new HtmlReporter({
baseDirectory: 'Results/Report'
}).getJasmine2Reporter());

let reporter = new HtmlReporter({
baseDirectory: 'Results/Report'
});

let path = require('path');
new HtmlReporter({
baseDirectory: 'Results/Report'
, preserveDirectory: false
, cssOverrideFile: 'css/style.css'
, takeScreenShotsForSkippedSpecs: true
, screenshotsSubfolder: 'images'
, jsonsSubfolder: 'jsons'
, takeScreenShotsOnlyForFailedSpecs: false
, gatherBrowserLogs: true
, pathBuilder: function pathBuilder(spec, descriptions, results, capabilities) {
// Return '<browser>/<specname>' as path for screenshots:
// Example: 'firefox/list-should work'.
return path.join(capabilities.caps_.browser, descriptions.join('-'));
}
, metaDataBuilder: function metaDataBuilder(spec, descriptions, results, capabilities) {
// Return the description of the spec and if it has passed or not:
return {
description: descriptions.join(' ')
, passed: results.passed()
};
}
});

let MailListener = require("mail-listener2");

// here goes your email connection configuration
let mailListener = new MailListener({
username: "myemailid",
password: "mypassword",
host: "imap.gmail.com",
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();


},

};

但是在执行脚本时出现以下错误。错误是:

Error: Please log in via your web browser: 
https://support.google.com/mail/accounts/answer/78754 (Failure)

Failed: browser.controlFlow(...).await is not a function

我知道我做错了,但我无法弄清楚。因此,任何人都可以帮助我指出并解决它,而不是解决问题,但至少可以提供一些有助于完美运行此脚本的建议。

谢谢

最佳答案

尝试使用 browser.wait(getLastEmail) 而不是 browser.controlFlow().await(getLastEmail()

关于javascript - Protractor 端到端测试;验证帐户激活电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48499322/

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