Как передать переменную в качестве аргумента 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