所以我有一些代码,我想在外面传递一个变量,所以我可以评估另一个页面并注入上一页的代码。
我不是这里的专家,我只是没有理解这个概念。谁能帮助我理解我做错了什么?
var loadtest = require('loadtest');
var host = 'http://localhost:1337';
var options = {
url: host + '/test/hi',
requestsPerSecond: 50
};
loadtest.loadTest(options, function(error, result)
{
if (error)
{
return console.error('Got an error: %s', error);
}
console.log('Tests run successfully: '+result);
});
答案 0 :(得分:0)
我为您编写了一个小示例代码,以说明如何在evaluate和casper脚本之间传递结果:
var casper = require('casper').create({
verbose: true,
logLevel: 'debug'
});
var array = []
casper.start('http://www.ecma-international.org/memento/TC39.htm');
casper.then(function() {
array = casper.evaluate(function () {
var nodes = document.querySelectorAll('a')
var result = Array.prototype.map.call(nodes, function (div) {
return div.href
})
return result
});
});
casper.then(function () {
casper.echo(array.length);
casper.echo(array.join("\n"))
})
casper.run()
输出:
22
http://www.ecma-international.org/default.htm
http://www.ecma-international.org/contact/contact.html
http://www.ecma-international.org/sitemap/ecma_sitemap.html
http://www.ecma-international.org/memento/index.html
http://www.ecma-international.org/activities/index.html
http://www.ecma-international.org/news/index.html
http://www.ecma-international.org/publications/index.html
http://www.ecma-international.org/memento/history.htm
... ignore some lines
所以,来你的代码:
evaluate
参数的更改不会对您的全局变量进行更改。也就是说,无论你对scheduleArray
内evaluate
做什么,全局变量scheduleArray
都是一样的。
在evaluate
内,您应该使用console.log
进行记录,但在evaluate
之外,您应该使用casper.echo
。