Javascript 无法在量角器中检索电子邮件信息
参考问题中的信息,我仍然无法参考电子邮件。在我的测试用例中,“expect”没有被执行,原因不明 如果我用这条线Javascript 无法在量角器中检索电子邮件信息,javascript,email,protractor,e2e-testing,Javascript,Email,Protractor,E2e Testing,参考问题中的信息,我仍然无法参考电子邮件。在我的测试用例中,“expect”没有被执行,原因不明 如果我用这条线 browser.controlFlow().await(getLastEmail()).then(...) 存在“browser.controlFlow(…).await不是函数错误” conf.js var MailListener = require("mail-listener2") exports.config = { framework: 'jasmine2', spe
browser.controlFlow().await(getLastEmail()).then(...)
存在“browser.controlFlow(…).await不是函数错误”
conf.js
var MailListener = require("mail-listener2")
exports.config = {
framework: 'jasmine2',
specs: ['./test.js'],
jasmineNodeOpts: { defaultTimeoutInterval: 360000 },
allScriptsTimeout: 60000,
onPrepare: function () {
var mailListener = new MailListener({
username: "username",
password: "password",
host: "imapPort",
port: 993, // imap port
secure: true,
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")
})
mailListener.on("error", function(err){
console.log(err)
})
mailListener.on("server:disconnected", function(){
console.log("imapDisconnected")
})
global.mailListener = mailListener
},
onCleanUp: function () {
mailListener.stop()
}
}
测试用例:
describe('Email Testing', function () {
it('should login with a registration code sent to an email', function () {
//this line causes a 'browser.controlFlow(...).await is not a function' error
// browser.controlFlow().await(getLastEmail()).then(function (email) {
getLastEmail().then(function (email) {
// The expect does not get executed as it should fail
expect(email.subject).toEqual('My Subject')
})
})
})
function getLastEmail () {
var deferred = protractor.promise.defer()
console.log('Waiting for an email...')
mailListener.on('mail', function (mail) {
console.log('No Console Log Here!')
deferred.fulfill(mail)
})
return deferred.promise
}
我不确定我的测试用例中缺少了什么才能阅读邮件的主题或正文?您基本上必须将异步代码包装在承诺中,并将承诺/函数传递到流中。execute()
今天遇到了同样的问题。原来webdriver和ControlFlow的API已经更新,wait已经更改为wait。是的,细微的差别。请参见此处的新API参考: 要为等待条件安排任务,请将代码更改为如下所示:
browser.controlFlow().wait(getLastEmail()).then(...)
您使用的量角器版本是什么?我使用的是量角器3.1.1您好,我在使用量角器@3.1.1时看到相同的错误“browser.controlFlow(…)。wait不是函数”。如果有人已经有了解决方案,请您提出建议。
browser.controlFlow().wait(getLastEmail()).then(...)