js错误:搜索失败:没有响应"goto"
Nightmare.js error: Search failed: Nothing responds to "goto"
我遇到了一个错误,当在噩梦。JS中包含香草JS。我要确保数组中的每封电子邮件都输入到系统中。for循环是理想的,但是我经常遇到这样的错误:
Search failed: Nothing responds to "goto"
下面是我的代码:
var jquery = require('jquery');
var Nightmare = require('nightmare');
var nightmare = Nightmare({
show: true,
dock: true
});
var siteName = "*********";
var username = "*********";
var password = "*********";
var outboundEmailArray = [
{
"from_name": "TestOutbound",
"email_username": "array1",
"email_domain": "salesforce.com",
"email_domain": "salesforce.com",
"reply_to": "testOutbound@salesforce.com"
},
{
"from_name": "Tester",
"email_username": "array2.0",
"email_domain": "salesforce.com",
"email_domain": "salesforce.com",
"reply_to": "testOutbound@salesforce.com"
}
];
//
// var outboundEmailSetup = function(outboundEmail){
// nightmare
// .goto("https://" + siteName + ".desk.com/login/new")
// .type("input[id='user_session_email']", username)
// .type("input[id='user_session_password']", password)
// .click("#user_session_submit").wait(2000)
// .goto("https://" + siteName + ".desk.com/admin/settings/mail-servers")
// .click("#a-add-modal").wait(2000)
// .type("input[id='postmark_outbound_mailbox_fromname']", outboundEmail.from_name).wait(2000)
// .type("input[id='email_username']", outboundEmail.email_username).wait(2000)
// .click("#from_select_4999").wait(2000)
// .type("input[id='postmark_outbound_mailbox_reply_to']", outboundEmail.reply_to).wait(2000)
// .click("#postmark_commit").wait(2000)
// .click(".a-modal-bottom .a-button").wait(2000)
// .evaluate(function() {})
// .end()
// .then(function(result) {
// console.log(result)
// })
// .catch(function(error) {
// console.error('Search failed:', error);
// });
// }
var outboundEmailSetup = function(i){
if(i < outboundEmailArray.length) {
nightmare
.goto("https://" + siteName + ".desk.com/login/new")
.type("input[id='user_session_email']", username)
.type("input[id='user_session_password']", password)
.click("#user_session_submit").wait(2000)
.goto("https://" + siteName + ".desk.com/admin/settings/mail-servers")
.click("#a-add-modal").wait(2000)
.type("input[id='postmark_outbound_mailbox_fromname']", outboundEmailArray[i].from_name).wait(2000)
.type("input[id='email_username']", outboundEmailArray[i].email_username).wait(2000)
.click("#from_select_4999").wait(2000)
.type("input[id='postmark_outbound_mailbox_reply_to']", outboundEmailArray[i].reply_to).wait(2000)
.click("#postmark_commit").wait(2000)
.click(".a-modal-bottom .a-button").wait(2000)
.evaluate(function() {})
.end()
.then(function(result) {
console.log(result)
})
.catch(function(error) {
console.error('Search failed:', error);
});
outboundEmailSetup(i+1);
}
}
outboundEmailSetup(0);
理想情况下,它将循环通过outboundEmailArray,运行函数将电子邮件输入到系统中,重复直到到达数组的末尾。
关键是要避免同时调用多个then
方法
你可以在这里找到关于那个概念的非常详细的解释。
基本上你要做的就是确保每个连续的调用都发生在前一个调用then
方法中
当我们事先知道我们要处理多少步时,这真的很简单。例如,如果我们想要连续调用两次,代码将是这样的:
nightmare.goto('http://example.com')
.title()
.then(function(title) {
console.log(title);
nightmare.goto('http://google.com')
.title()
.then(function(title) {
console.log(title);
});
});
注意goto
到google.com是如何在then
回调中。
因为你在处理一个循环,你的代码会更复杂一些。
var urls = ['http://example1.com', 'http://example2.com', 'http://example3.com'];
urls.reduce(function(accumulator, url) {
return accumulator.then(function(results) {
return nightmare.goto(url)
.wait('body')
.title()
.then(function(result){
results.push(result);
return results;
});
});
}, Promise.resolve([])).then(function(results){
console.dir(results);
});
我认为源代码链接比我能更好地解释这段代码:-)
上面的代码依次执行每个梦魇队列,并将结果相加到一个数组。得到的累积数组被解析为final.then()调用,输出结果。
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- JavaScript goto 标签如何使用内部循环
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- "工具提示"jQuery插件坏了
- "锻造;React中的表达式
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 如何提取“;href"最近列表项中的属性值
- CKEditor如何允许href="javascript:void(0)"在小部件中