使用命令行

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

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

我们来看看这个简单的casper脚本:

  1. var casper = require("casper").create();
  2. casper.echo("Casper CLI passed args:");
  3. require("utils").dump(casper.cli.args);
  4. casper.echo("Casper CLI passed options:");
  5. require("utils").dump(casper.cli.options);
  6. casper.exit();
提示

请注意这两个casper-path和cli选项,这些选项通过casperjs Python可执行文件传递给casper脚本。

运行结果:

  1. $ casperjs test.js arg1 arg2 arg3 --foo=bar --plop anotherarg
  2. Casper CLI passed args: [
  3. "arg1",
  4. "arg2",
  5. "arg3",
  6. "anotherarg"
  7. ]
  8. Casper CLI passed options: {
  9. "casper-path": "/Users/niko/Sites/casperjs",
  10. "cli": true,
  11. "foo": "bar",
  12. "plop": true
  13. }

获取,查询或删除参数:

  1. var casper = require("casper").create();
  2. casper.echo(casper.cli.has(0));
  3. casper.echo(casper.cli.get(0));
  4. casper.echo(casper.cli.has(3));
  5. casper.echo(casper.cli.get(3));
  6. casper.echo(casper.cli.has("foo"));
  7. casper.echo(casper.cli.get("foo"));
  8. casper.cli.drop("foo");
  9. casper.echo(casper.cli.has("foo"));
  10. casper.echo(casper.cli.get("foo"));
  11. casper.exit();

运行结果:

  1. $ casperjs test.js arg1 arg2 arg3 --foo=bar --plop anotherarg
  2. true
  3. arg1
  4. true
  5. anotherarg
  6. true
  7. bar
  8. false
  9. undefined
提示

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

提示

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

  1. // removing default options passed by the Python executable
  2. casper.cli.drop("cli");
  3. casper.cli.drop("casper-path");
  4. if (casper.cli.args.length === 0 && Object.keys(casper.cli.options).length === 0) {
  5. casper.echo("No arg nor option passed").exit();
  6. }

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仍然可以使用,但我们建议你放弃使用它从而使用重命名之后的选项。

示例:

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

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

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

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

原始参数值

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

  1. var casper = require('casper').create();
  2. var utils = require('utils');
  3. utils.dump(casper.cli.get('foo'));
  4. casper.exit();

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

如果你使用参数的原始值,可以在cli对象中使用raw属性,它保存了传入参数的原始值:

  1. var casper = require('casper').create();
  2. var utils = require('utils');
  3. utils.dump(casper.cli.get('foo'));
  4. utils.dump(casper.cli.raw.get('foo'));
  5. casper.exit();

例子的用法:

  1. var casper = require('casper').create();
  2. var utils = require('utils');
  3. utils.dump(casper.cli.get('foo'));
  4. utils.dump(casper.cli.raw.get('foo'));
  5. casper.exit();

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