Как передать переменную в качестве аргумента CasperJS скрипт через командную строку?
Я использую PhantomJs, CasperJs и Js в файле js, запущенном через cmd.
представьте, что у нас было два файла(test1.js и test2.в JS). Оба файла имеют переменную url / site, которая направляет тест на определенный адрес. Каждый раз, когда изменяется среда или целевое местоположение, нам нужно будет обновить эту переменную.
чтобы избежать необходимости обновлять файлы, я хотел бы передать значения через командную строку, где это проверить.
там способ объявления строковой переменной через cmd при запуске файла?
например:
casperjs test.js "var site='http://google.com';"
4 ответов
на документация говорит, что вы можете передать параметры командной строки.
CasperJS поставляется со встроенным парсером командной строки поверх PhantomJS ' one, расположен в
cli
module; он предоставляет переданные аргументы как позиционные и именованные опциино не беспокойтесь о манипулировании 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.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');
У вас может быть один файл с вашими глобальными переменными, а затем вызвать их в других файлах. Например, когда вы хотите изменить одну переменную, у вас есть только один файл для изменения. Используйте 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(){
...
});
Полное Интуитивное Решение:
рассмотрим следующую команду:
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