Как передать переменную в качестве аргумента в CasperJS script через командную строку?
Я использую PhantomJs, CasperJs и Js в js файле, который запускается через cmd.
Представьте, что у нас было два файла (test1.js и test2.js). Оба файла имеют переменную url/site, которая направляет тест на конкретный адрес. Каждый раз, когда изменилась среда или изменилось целевое местоположение, нам нужно было бы обновить эту переменную.
Чтобы избежать необходимости обновлять файлы, я хотел бы передать значения через командную строку, где проверить это.
Есть ли способ объявить строковую переменную через cmd при запуске файла?
например:.
casperjs test.js "var site='http://google.com';"
Ответы
Ответ 1
В документации говорится, что вы можете передавать параметры командной строки.
CasperJS поставляется со встроенным синтаксическим анализатором командной строки поверх PhantomJS один, расположенный в модуле cli
; он раскрывает переданные аргументы как позиционные и именованные опции
Но не стоит беспокоиться о том, как манипулировать API-интерфейсом для анализа cli, 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 Каспер
CLI passed args: [
"arg1",
"arg2",
"arg3",
"anotherarg" ]
Casper CLI passed options: {
"casper-path": "/Users/niko/Sites/casperjs",
"cli": true,
"foo": "bar",
"plop": true }
Ответ 2
в командной строке:
casperjs test file_name.js --port='123' --username='batman'
в тесте script скажите:
casper.cli.get('port');
casper.cli.get('username');
Ответ 3
Полное интуитивное решение:
Рассмотрим следующую команду:
casperjs example.js true --foo=false
Строка true
это аргумент командной строки, в то время как имя foo
является параметром командной строки.
Значение, присвоенное имени (переменной) foo
является строкой 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.
Ответ 4
Вы можете иметь один файл с вашими глобальными переменными, а затем вызывать их в других файлах. Например, если вы хотите изменить одну переменную, у вас есть только один файл для изменения. Используйте phantom.injectJs (путь/к/файлу) для вызова других файлов в ваших основных файлах. Работает с 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(){
...
});
Ответ 5
Нашел ответы слишком сложно понять с первого взгляда. Вы можете передать параметры 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();