从node.js向CasperJS传递参数数组
Passing argument array to CasperJS from node.js
我正在使用CasperJS测试一个网站。测试的一部分是资源检查。
我想做的事:
将数组或对象数组传递给CasperJS并对其进行迭代。第一步是先使用一个数组,然后使用对象数组。两者都有相同的问题。
Node.js代码:
require('child_process').exec('/usr/local/bin/casperjs script.js [url,regex]' , function(err, stdout, stderr) {
err && console.log(err);
stderr && console.log(stderr.toString());
stdout && console.log(stdout.toString());
})
Casperjs脚本:
var casper = require('casper').create(),
a = casper.cli.args[0],
// we need something here to string to js array
w=a[0],
r=a[1];
casper.start(w, function() {
if (this.resourceExists(r)) {
console.log("PASS't" +r+ "'t"+ w);
} else {
console.log("FAIL't" +r+ "'t"+ w);
}
});
casper.run();
问题是CasperJS将args作为字符串。
当你这样称呼它时:
'/usr/local/bin/casperjs script.js "['''+yourURL+''','''+yourRegex+''']"'
你可以简单地使用
a = JSON.parse(casper.cli.args[0]),
w = a[0],
r = new RegExp(a[1]);
如果casper.cli.args[0]
实际上是JSON,那么它可以被解析为JSON。resourceExists()
仅将正则表达式作为RegExp
对象。
更好的方法是,如果您传递的数据太长,那么您应该使用node.js的fs模块将数据写入一个临时文件,然后使用PhantomJS的fs模块读取数据,并在此过程中对其进行解析。
解决问题的更好方法:https://groups.google.com/forum/#!topic/caperjs/bhA81yHA7s
将变量作为选项传递。像魅力一样工作
我的最终节点:
var exec = require('child_process'),
array = [
{url:"",regex:""}
];
for (var i = 0; i < array.length; i++) {
var url = array[i]["url"];
var regex = array[i]["regex"];
exec.exec('/usr/local/bin/casperjs casper2.js --url="'+url+'" --regex="'+regex+'" ' , function(err, stdout, stderr) {
err && console.log(err);
stderr && console.log(stderr.toString());
stdout && console.log(stdout.toString());
});
};
在CasperJS 中
w=casper.cli.get("url"),
reg= casper.cli.get("regex"),
rpart = reg.split("/"),
r=new RegExp(rpart[1],rpart[2]);
casper.start(w, function() {
if (this.resourceExists(r)) {
console.log("PASS't" +r+ "'t"+ w);
} else {
console.log("FAIL't" +r+ "'t"+ w);
}
});
casper.run();
相关文章:
- 从node.js向CasperJS传递参数数组
- 如何从参数数组中调用回调
- 传递参数数组而不更改此项
- 在参数数组中传递整数数组
- 如何在JavaScript中获取字符串表示的参数数组
- 使用包含参数数组的数组调用函数,而不是仅列出数组
- JavaScript 修改 URL 参数数组
- 如何将参数数组传递给 JavaScript 中的另一个函数
- 传递参数数组
- 带有函数参数数组的闭包
- 将 JavaScript new 关键字与可变长度参数数组一起使用
- JavaScript:为什么更改参数变量会更改“参数”“数组”
- 如果使用参数数组调用,则日期会更改结果
- 试图理解Javascript中参数数组的概念
- Javascript:如何使用apply方法传递参数数组,然后在被调用的函数中访问它
- 发送单个参数与参数数组
- Array.from(arguments)是创建参数数组的一种可接受的方法
- 函数参数数组,如何影响reference =[]或reference.concat(array2)
- 在javascript中构建参数数组
- Javascript:是已弃用的参数数组