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"新闻热点
疑难解答