假装异步加载中...
17 Feb 2015

CasperJS 命令行

casperjs内置一个命令行解析器,基于PhantomJS 命令行构建,放在cli模块下;它会把命令行传过来的参数转换成有位置属性的参数和命名的选项(it exposes passed arguments as positional ones and named options

但你无需担心调用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();

运行结果:

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

注意:上面出现的两个选项casper-pathcli ,是通过casperjs Python executable传给casper脚本的。

获取,检查或是丢弃(drop)参数:

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 anotherarg
true
arg1
true
anotherarg
true
bar
false
undefined

提示:如果你想检查是否有参数或者选项传递给脚本,可以用下面方式:

   // 去掉Python executable传递的默认选项 
   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();
   }

##casperjs原生的选项 casperjs命令有三个可用选项:

  • --direct: 打印log信息到控制台
  • --log-level=[debug|info|warning|error] 设定log level
  • --engine=[phantomjs|slimerjs] 选择浏览器引擎. CasperJS 支持基于Webkit的 PhantomJS (默认), 和基于Gecko的 SlimerJS.

警告:--direct从1.1版本标记为deprecated。--direct 选项更名为 --verbose, 尽管 --direct 还可以工作,但是已经被视为deprecated

例如:

$ casperjs --verbose --log-level=debug myscript.js

你还可以使用所有PhantomJs标准命令行选项,就像在phantomjs 脚本上使用一样:

$ casperjs --web-security=no --cookies-file=/tmp/mycookies.txt myscript.js

提示:通过phantomjs --help查看可以用的phantomjs命令行选项。SlimerJS支持几乎和PhantomJS 一样的选项。

##原始参数值

默认情况下,cli对象会处理传进来的每个参数,将它们转成最合适类型,例如:

var casper = require('casper').create();
var utils = require('utils');

utils.dump(casper.cli.get('foo'));

casper.exit();

如果用下面方式运行上面代码:

$ casperjs c.js --foo=01234567
1234567

如你所见,01234567值被转换成了一个 Number.

有时候,你就想得到原本的字符串,那么你可以使用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=01234567
1234567
"01234567"
发现文章有错误或是有疑问,欢迎骚扰:395217502@qq.com
comments powered by Disqus