将函数传递给 nighmarejs evaluate()
Pass a function to nighmarejs evaluate()
我试图传递一个在 nightmarejs 评估语句中调用的函数和 return 一个值。像这样:
var thisfunction = function() {
var tags = [];
var list = document.querySelector('#selectSomething');
list.forEach(function(item) {
tags.push({
name: item.attributes[1].value,
id: item.attributes[2].value
})
});
return tags;
};
return nightmare
.goto('url')
.wait('#something')
.evaluate(function(getValues) {
getValues();
}, thisfunction)
.then(function(list) {
console.log(list);
})
我正在 ReferenceError: getValues is not defined
。在不同的地方用 return 语句尝试了不同的方法,但没有成功。
如何做到这一点?
谢谢!
我想您可以简单地编写以下代码:
var thisfunction = function() {
var tags = [];
var list = document.querySelector('#selectSomething');
list.forEach(function(item) {
tags.push({
name: item.attributes[1].value,
id: item.attributes[2].value
})
});
return tags;
};
return nightmare
.goto('url')
.wait('#something')
.evaluate(thisfunction)
.then(function(list) {
console.log(list);
})
行为背后的原因
您可以将 strings/numbers 作为参数传递,但不能传递 functions/object,因为它们在传递给评估方法之前已序列化。
你可以看看解释here
还有 ticket on Github 位有类似经历的用户。
我试图传递一个在 nightmarejs 评估语句中调用的函数和 return 一个值。像这样:
var thisfunction = function() {
var tags = [];
var list = document.querySelector('#selectSomething');
list.forEach(function(item) {
tags.push({
name: item.attributes[1].value,
id: item.attributes[2].value
})
});
return tags;
};
return nightmare
.goto('url')
.wait('#something')
.evaluate(function(getValues) {
getValues();
}, thisfunction)
.then(function(list) {
console.log(list);
})
我正在 ReferenceError: getValues is not defined
。在不同的地方用 return 语句尝试了不同的方法,但没有成功。
如何做到这一点?
谢谢!
我想您可以简单地编写以下代码:
var thisfunction = function() {
var tags = [];
var list = document.querySelector('#selectSomething');
list.forEach(function(item) {
tags.push({
name: item.attributes[1].value,
id: item.attributes[2].value
})
});
return tags;
};
return nightmare
.goto('url')
.wait('#something')
.evaluate(thisfunction)
.then(function(list) {
console.log(list);
})
行为背后的原因
您可以将 strings/numbers 作为参数传递,但不能传递 functions/object,因为它们在传递给评估方法之前已序列化。
你可以看看解释here
还有 ticket on Github 位有类似经历的用户。