使用命令列 Casperjs使用內建的phantomjs命令列解析器,在cli模組裡,它傳遞參數位置的命名選項 但是不要擔心不能熟練操控CLI模組的API,一個casper執行個體已經包含了cli屬性,允許你很容易的使用他的參數 讓我們來看這個簡單的casper指令碼: 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(); 注意: 請注意casper-path 和 cli這兩個參數,他們在通過casperjs執行casperjs指令碼時被python執行 執行結果: $ casperjs test.js arg1 arg2 arg3 --foo=bar --plop anotherargCasper CLI passed args: [ "arg1", "arg2", "arg3", "anotherarg"]Casper CLI passed options: { "casper-path": "/Users/niko/Sites/casperjs", "cli": true, "foo": "bar", "plop": true}擷取,檢查,刪除參數:var casper = require("casper").create();casper.echo(casper.cli.has(0));casper.echo(casper.cli.get(0));casper.echo(casper.cli.has(3));casper.echo(casper.cli.get(3));casper.echo(casper.cli.has("foo"));casper.echo(casper.cli.get("foo"));casper.cli.drop("foo");casper.echo(casper.cli.has("foo"));casper.echo(casper.cli.get("foo"));casper.exit();執行結果:$ casperjs test.js arg1 arg2 arg3 --foo=bar --plop anotherargtruearg1trueanotherargtruebarfalseundefined有益的建議:如果你想檢查有那些參數在你的指令碼中被使用,看下面的: casper.cli.drop("cli");casper.cli.drop("casper-path"); if (casper.cli.args.length === 0 && Object.keys(casper.cli.options).length === 0) { casper.echo("No arg nor option passed").exit();}casper自有參數:1.1版本新增:casperjs命令有3個通用的參數:--direct:把日誌訊息輸出到控制台--log-level=[debug|info|warning|error] 設定log等級--engine=[phantomjs|slimerjs] 選擇你想用的瀏覽器引擎,casperjs預設支援phantomjs支援的webkit,SlimerJS運行webkit核心 注意:1.1版本已廢棄--direct參數已更名為--verbose。--direct儘管仍然可用,但是他被廢棄是經過考慮的。 舉例:$ casperjs --verbose --log-level=debug myscript.js 最後但同樣重要的是,你也能夠使用所有的phantomjs 和cli命令列參數就像你運行其他的phantomjs指令碼一樣$ casperjs --web-security=no --cookies-file=/tmp/mycookies.txt myscript.js 有益的建議:想知道有那些phantomjs命令列參數可用,請運行phantomjs --help命令,SlimerJS支援的命令列參數幾乎和phantomjs一致 原始參數值:1.0版本新增 預設情況下,cli對象將把所有參數轉換成他認為最合適的類型,比如這個例子: var casper = require('casper').create();var utils = require('utils'); utils.dump(casper.cli.get('foo')); casper.exit();運行這個指令碼:$ casperjs c.js --foo=012345671234567就像你看到的,01234567被轉化為數字有時候,你僅想得到原始的字串,你可以使用cli對象的raw屬性,他包含了這個參數的原始值var casper = require('casper').create();var utils = require('utils'); utils.dump(casper.cli.get('foo'));utils.dump(casper.cli.raw.get('foo')); casper.exit();使用舉例:$ casperjs c.js --foo=012345671234567"01234567"