nightmare js中选中元素动态列表连续点击操作
Perform click operation in succession on dynamic list of selected elements in nightmare js
我刚开始使用 nightmare。
我在我的网页上使用它进行测试。
我有以下用户界面。
menu
tab1 | tab2 | tab3 ......(dynamically generated tabs)
container div for selected tab
selected tab data
我得到了包含菜单的 dom 元素。
我不知道如何执行单击每个选项卡并获取所选选项卡数据。
阅读文档后我无法理解这一点,也没有任何示例。
我只能做到这一点 -
var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: true });
nightmare
.goto('http://www.example.com')
.wait('#menu')
.evaluate(function () {
var menuDiv = document.querySelector('div#menu.content-disp');
var menuAnchors = menuDiv.querySelectorAll('a[href]');
var res = "";
for(var i =0;i<menuAnchors.length;i++){
res+=menuAnchors[i].innerText;
}
return res;
})
.end()
.then(function (result) {
console.log(result)
})
.catch(function (error) {
console.error('Search failed:', error);
});
我正在使用 噩梦 版本
"dependencies": {
"nightmare": "^2.8.1"
}
构建锚点列表后,您需要迭代它们,使用 Promises 是一项 non-trivial 任务。考虑以下内容,它会遍历您的结果并获取每个页面的标题:
nightmare.then((result) =>
result.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);
});
您可能想 "Asynchronous Operations and Loops" at nightmare-examples
读一读。这应该可以帮助您入门。
我刚开始使用 nightmare。 我在我的网页上使用它进行测试。
我有以下用户界面。
menu
tab1 | tab2 | tab3 ......(dynamically generated tabs)
container div for selected tab
selected tab data
我得到了包含菜单的 dom 元素。
我不知道如何执行单击每个选项卡并获取所选选项卡数据。
阅读文档后我无法理解这一点,也没有任何示例。
我只能做到这一点 -
var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: true });
nightmare
.goto('http://www.example.com')
.wait('#menu')
.evaluate(function () {
var menuDiv = document.querySelector('div#menu.content-disp');
var menuAnchors = menuDiv.querySelectorAll('a[href]');
var res = "";
for(var i =0;i<menuAnchors.length;i++){
res+=menuAnchors[i].innerText;
}
return res;
})
.end()
.then(function (result) {
console.log(result)
})
.catch(function (error) {
console.error('Search failed:', error);
});
我正在使用 噩梦 版本
"dependencies": {
"nightmare": "^2.8.1"
}
构建锚点列表后,您需要迭代它们,使用 Promises 是一项 non-trivial 任务。考虑以下内容,它会遍历您的结果并获取每个页面的标题:
nightmare.then((result) =>
result.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);
});
您可能想 "Asynchronous Operations and Loops" at nightmare-examples
读一读。这应该可以帮助您入门。