簡體   English   中英

從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/casperjs/bhA81OyHA7s

將變量作為選項傳遞。 奇跡般有效


我的最終nodejs:

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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM