javascript - how - phantomjs js
¿Cómo pasar una variable como argumento a un script CasperJS a través de la línea de comandos? (5)
Solución Intuitiva Completa:
Considere el siguiente comando:
casperjs example.js true --foo=false
La cadena true
es un argumento de línea de comando, mientras que el nombre foo
es una opción de línea de comando.
El valor asignado al nombre (variable) foo
es la cadena false
.
Los argumentos de la línea de comando son posicionales y se debe acceder a ellos a través del índice del argumento.
Las opciones de la línea de comandos se denominan y se debe acceder a ellas mediante el nombre de la opción.
En otras palabras, podría ver los argumentos como similares a los valores en una matriz numérica , mientras que las opciones son similares a los pares clave / valor en una matriz asociativa .
Argumentos de línea de comando
Puedes acceder a los argumentos usando uno de los siguientes métodos:
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)
Opciones de línea de comando
Puede acceder a las opciones utilizando uno de los siguientes métodos:
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)
Para otras consultas sobre los argumentos u opciones de la línea de comando de CasperJS, consulte la documentación: documentation
Estoy usando PhantomJs, CasperJs y Js en un archivo js ejecutado a través del cmd.
Imagina que tenemos dos archivos (test1.js y test2.js). Ambos archivos tienen una variable url / sitio que dirige la prueba a una dirección particular. Cada vez que un entorno cambia o la ubicación de destino cambia, deberíamos actualizar esta variable.
Para evitar tener que actualizar los archivos, me gustaría pasar los valores a través de la línea de comandos, en cuanto a dónde probar esto.
¿Hay una manera de declarar la variable de cadena a través del cmd mientras ejecuta el archivo?
P.ej:
casperjs test.js "var site=''http://google.com'';"
Encontré las respuestas demasiado difíciles de entender de un vistazo. Puede pasar parámetros arg o opción.
Ejemplo: Pasar opciones * (Se requiere usar
=
)
$ 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();
Ejemplo: pasar Args
$ 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();
La documentation dice que puede pasar parámetros de línea de comandos.
CasperJS se envía con un analizador de línea de comandos incorporado encima del PhantomJS, ubicado en el módulo
cli
; Expone argumentos pasados como posicionales y opciones nombradas.Pero no se preocupe por manipular la API de análisis del módulo cli, una instancia de Casper siempre contiene una propiedad
cli
lista para usar, lo que permite un fácil acceso a todos estos parámetros.
Código de ejemplo:
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();
Resultados de ejecución:
$ casperjs test.js arg1 arg2 arg3 --foo = barra --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 }
Podría tener un archivo con sus variables globales y luego invocarlos en los otros archivos. Al igual que cuando desea modificar una variable, solo tiene que modificar un archivo. Use phantom.injectJs (ruta / a / archivo) para llamar a otros archivos en sus archivos principales. Funciona con phantomJS y slimerJS.
Ejemplo:
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(){
...
});
en el símbolo del sistema diga:
casperjs test file_name.js --port=''123'' --username=''batman''
en el guión de prueba diga:
casper.cli.get(''port'');
casper.cli.get(''username'');