web-dev-qa-db-ja.com

コマンドラインからCasperJSスクリプトに変数を引数として渡す方法は?

Cmdを介して実行されたjsファイルでPhantomJs、CasperJs、およびJsを使用しています。

2つのファイル(test1.jsとtest2.js)があると想像してください。どちらのファイルにも、テストを特定のアドレスに送信するurl/site変数があります。環境が変更されたり、ターゲットの場所が変更されたりするたびに、この変数を更新する必要があります。

ファイルを更新する必要がないように、これをテストする場所について、コマンドラインから値を渡したいと思います。

ファイルを実行するときにcmdを介して文字列変数を宣言する方法はありますか?

例えば。:

casperjs test.js "var site='http://google.com';"
18
user1816910

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 }
23
kapa

コマンドプロンプトで次のように言います。

casperjs test file_name.js --port='123' --username='batman'

テストスクリプトで次のように言います。

casper.cli.get('port');
casper.cli.get('username');
11
SharpCoder

完全な直感的なソリューション:

次のコマンドについて考えてみます。

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

3
Grant Miller

グローバル変数を含む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(){
    ...
});
1
Fanch

一目で理解するのが難しすぎる答えを見つけました。 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();
1
Proximo