2014-02-13 5 views
16

Ich benutze PhantomJs, CasperJs und Js in einer js-Datei lief durch die cmd.Wie übergibt man eine Variable als Argument an ein CasperJS-Skript über die Befehlszeile?

Stellen Sie sich vor wir hatten zwei Dateien (test1.js und test2.js). Beide Dateien haben eine URL/Site-Variable, die den Test an eine bestimmte Adresse leitet. Jedes Mal, wenn sich eine Umgebung änderte oder sich der Zielstandort änderte, mussten wir diese Variable aktualisieren.

Um zu vermeiden, die Dateien zu aktualisieren, möchte ich die Werte über die Befehlszeile weitergeben, wo dies getestet werden soll.

Gibt es eine Möglichkeit, die Zeichenfolgevariable über den Cmd zu deklarieren, während Sie die Datei ausführen?

Z. B .:

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

Antwort

18

Der documentation sagt, Sie Befehlszeilenparameter übergeben können.

CasperJS Schiffe mit einer integrierten Befehlszeilen-Parser oben auf PhantomJS‘ein, das sich im cli Modul; Sie entlarvt Argumente übergeben als Positions Einsen und benannte Optionen

Aber keine Sorge für die cli Modul Parsen API manipulieren, eine Casper Instanz enthält immer eine fertige cli Eigenschaft verwenden, die einen leichten Zugang all dieser Parameter.

Beispielcode:

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(); 

Execution Ergebnisse:

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

Danke. Dies ist perfekt. Tolle Erklärung. Ich glaube, ich habe ihre Erklärung einfach nicht verstanden. Danke für die ausführliche Information. –

+1

@AaronLoften Nun, ich muss dir sagen, dass meine ganze Antwort von der Dokumentationsseite kopiert wurde, die ich verlinkt habe;). – kapa

+0

Haha. Ich bin blind. Danke noch einmal! –

0

Sie könnten eine Datei mit Ihren globalen Variablen haben, th Rufen Sie sie in den anderen Dateien auf. Wenn Sie beispielsweise eine Variable ändern möchten, müssen Sie nur eine Datei ändern. Verwenden Sie phantom.injectJs (Pfad/zu/Datei), um andere Dateien in Ihren Hauptdateien aufzurufen. Es funktioniert mit phantomJS und slimerJS.

Beispiel:

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(){ 
    ... 
}); 
10

auf die Eingabeaufforderung sagen:

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

im Testskript sagen:

casper.cli.get('port'); 
casper.cli.get('username'); 
Verwandte Themen