Cmdを介して実行されたjsファイルでPhantomJs、CasperJs、およびJsを使用しています。
2つのファイル(test1.jsとtest2.js)があると想像してください。どちらのファイルにも、テストを特定のアドレスに送信するurl/site変数があります。環境が変更されたり、ターゲットの場所が変更されたりするたびに、この変数を更新する必要があります。
ファイルを更新する必要がないように、これをテストする場所について、コマンドラインから値を渡したいと思います。
ファイルを実行するときにcmdを介して文字列変数を宣言する方法はありますか?
例えば。:
casperjs test.js "var site='http://google.com';"
documentation は、コマンドラインパラメータを渡すことができることを示しています。
CasperJSには、
cli
モジュールにあるPhantomJSのパーサーの上に組み込みのコマンドラインパーサーが付属しています。渡された引数を定位置引数および名前付きオプションとして公開しますただし、cliモジュール解析APIを操作する心配はありません。Casperインスタンスには、すぐに使用できる
cli
プロパティが常に含まれているため、これらすべてのパラメーターに簡単にアクセスできます。
コード例:
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 }
コマンドプロンプトで次のように言います。
casperjs test file_name.js --port='123' --username='batman'
テストスクリプトで次のように言います。
casper.cli.get('port');
casper.cli.get('username');
次のコマンドについて考えてみます。
casperjs example.js true --foo=false
文字列true
はコマンドラインargumentであり、名前foo
はコマンドラインoptionです。
名前(変数)foo
に割り当てられたvalueは、文字列false
です。
コマンドライン引数は定位置であり、引数のインデックスを介してアクセスする必要があります。
コマンドラインオプションは名前が付けられており、オプションの名前を介してアクセスする必要があります。
言い換えると、引数は数値配列の値に似ているのに対し、オプションは連想配列のキー/値のペアに似ていると見なすことができます。 。
コマンドライン引数
次のいずれかの方法を使用して引数にアクセスできます。
casper.cli.get(0) // Returns Boolean true ; Slowest / Most Readable (Opinion)
casper.cli.args[0] // Returns Boolean true
casper.cli.raw.get(0) // Returns String "true"
casper.cli.raw.args[0] // Returns String "true" ; Fastest / Least Readable (Opinion)
コマンドラインオプション
次のいずれかの方法を使用して、オプションにアクセスできます。
casper.cli.get('foo') // Returns Boolean false ; Slowest / Most Readable (Opinion)
casper.cli.options['foo'] // Returns Boolean false
casper.cli.raw.get('foo') // Returns String "false"
casper.cli.raw.options['foo'] // Returns String "false" ; Fastest / Least Readable (Opinion)
CasperJSコマンドラインの引数またはオプションに関するその他の問い合わせについては、ドキュメントを参照してください。 http://docs.casperjs.org/en/latest/cli.html
グローバル変数を含む1つのファイルを作成し、それらを他のファイルで呼び出すことができます。このように、1つの変数を変更する場合、変更するファイルは1つだけです。 phantom.injectJs(path/to/file)を使用して、メインファイル内の他のファイルを呼び出します。 phantomJSおよびslimerJSで動作します。
例:
js_file
--variable.js--
var site='http://google.com';
js_file
--file1.js--
phantom.injectJs( 'variable.js');
casper.start(site, function(){
...
});
js_file
--file2.js--
phantom.injectJs( 'variable.js');
casper.thenOpen(site, function(){
...
});
一目で理解するのが難しすぎる答えを見つけました。 argまたはoptionパラメーターを渡すことができます。
例:オプションの受け渡し*(
=
の使用が必要です)
$ casperjs myscript.js --username=user --password=123
var casper = require('casper').create();
var username = casper.cli.options.username;
var password = casper.cli.options.password;
console.log(username + ':' + password); // user:123
casper.exit();
例:引数の受け渡し
$ casperjs myscript.js user 123
var casper = require('casper').create();
var username = casper.cli.args[0];
var password = casper.cli.args[1];
console.log(username + ':' + password); // user:123
casper.exit();