Skip to content

Latest commit

 

History

History
139 lines (115 loc) · 4.13 KB

2.Using the command line-使用命令行.md

File metadata and controls

139 lines (115 loc) · 4.13 KB

使用命令行

CasperJS附带了位于cli模块中的PhantomJS解析器之上的内置命令行解析器。它将传递的参数公开为位置命名选项

Casper实例总是包含一个可以使用的cli属性来方便访问这些参数,因此您不用担心操作cli模块解析API。

我们来看看这个简单的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 Python可执行文件传递给casper脚本。

运行结果:

$ 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
}

获取,查询或删除参数:

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
提示

您可能需要在Windows中包裹含有转义双引号的空格的选项。如: -foo = \“space bar \”

提示

如果你想检查是否有任何参数或选项传递到你的脚本怎么办? 你可以这样:

// removing default options passed by the 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 本地选项

版本1.1新增 casperjs命令行有3个可用参数:

  • --direct:将log信息输出在控制台中。
  • --log-level=[debug|info|warning|error] 设置log类别
  • --engine=[phantomjs|slimerjs] 选择你想使用的浏览器内核。CasperJS支持 PhantomJS(默认)使用的Webkit内核, 和 SlimerJS 使用的Gecko内核。

警告 在版本1.1及以后版本弃用 --direct选项已经重命名为--verbose,尽管--direct仍然可以使用,但我们建议你放弃使用它从而使用重命名之后的选项。

示例:

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

最后提醒,你仍然可以像运行PhantomJS的脚本一样使用PhantomJS的标准CLI选项来运行脚本。

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

如果你想知道本地PhantomJS cli拥有哪些可用的选项,你可以运行phantomjs的--help命令, SlimerJS和PhantomJS的命令基本上相同。

原始参数值

版本1.0新增 在默认情况下,cli对象将处理每个传递的参数并将它们转换到适当的检测类型,看一个例子:

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

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

casper.exit();

如你所见,01234567的值被转换成了Nember。

如果你使用参数的原始值,可以在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();

例子的用法:

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

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

casper.exit();

由于ECMA脚本对数字的限制,对于非常长的数字(超过17位),CasperJS会使用参数的原始值。更多信息