2014-02-13 224 views
16

我正在使用PhantomJs,CasperJs和Js在js文件中運行cmd。如何通過命令行將變量作爲參數傳遞給CasperJS腳本?

試想一下,我們有兩個文件(test1.js和test2.js)。這兩個文件都有一個url /站點變量,將測試指向特定的地址。每當環境發生變化或目標位置發生變化時,我們都需要更新此變量。

爲了避免必須更新文件,我想通過命令行傳遞值,以便在哪裏測試。

有沒有爲你運行該文件宣佈通過CMD字符串變量的方法嗎?

例如爲:

casperjs test.js "var site='http://google.com';" 

回答

18

documentation說,你可以通過命令行參數。

CasperJS附帶一個內置的上 PhantomJS」之一,位於cli模塊中的頂部命令行分析器;它暴露了傳遞的參數 作爲位置的人,並命名選項

但對於操縱CLI模塊解析API無後顧之憂,一個卡斯帕爾 實例總是包含一個準備使用cli屬性,允許所有這些參數的簡單 訪問。

示例代碼:

var casper = require("casper").create(); 

casper.echo("Casper CLI passed args:"); 
require("utils").dump(casper.cli.args); 

casper.echo("Casper CLI passed options:"); 
require("utils").dump(casper.cli.options); 

casper.exit(); 

執行結果:

$ casperjs test.js ARG1參數3 --foo =酒吧--plop anotherarg卡斯帕

CLI passed args: [ 
    "arg1", 
    "arg2", 
    "arg3", 
    "anotherarg" ] 
Casper CLI passed options: { 
    "casper-path": "/Users/niko/Sites/casperjs", 
    "cli": true, 
    "foo": "bar", 
    "plop": true } 
+0

謝謝。太棒了。很好的解釋。我想我只是不明白他們的解釋。感謝您的深入信息。 –

+1

@AaronLoften那麼,我必須告訴你,我的整個答案是從我鏈接的文檔頁面複製而來;)。 – kapa

+0

哈哈。我瞎了。再次感謝! –

0

你可以用你的全局變量有一個文件,th en在其他文件中調用它們。像這樣,當你想修改一個變量時,你只有一個文件需要修改。使用phantom.injectJs(路徑/到/文件)來調用主文件中的其他文件。它適用於phantomJS和slimerJS。

實施例:

js_file

--variable.js-- 
var site='http://google.com'; 

js_file

--file1.js-- 
phantom.injectJs('variable.js'); 
casper.start('site', function(){ 
    ... 
}); 

js_file

--file2.js-- 
phantom.injectJs('variable.js'); 
casper.thenOpen('site', function(){ 
    ... 
}); 
10
在命令提示

說:

casperjs test file_name.js --port='123' --username='batman' 
在測試腳本

說:

casper.cli.get('port'); 
casper.cli.get('username'); 
相關問題