Редактировать: я ответил на свой вопрос, см. Ниже.
ОРИГИНАЛ: У меня есть phantomjs и casperjs, установленные на моем веб-сервере, и они оба работают нормально. Сценарий, который я планирую создать, зависит от пользовательского ввода с моего сайта, который затем передается сценарию casperjs. Поймав немного, я заметил, что я застрял в самой основной задаче ввода пользователя. Как передать переменную от php до casperjs?
Обратите внимание, что это всего лишь тестовые скрипты.
Мой скрипт php
$user_input = $_POST['user_input']; putenv("PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs"); exec('/usr/local/bin/casperjs hello.js 2>&1',$output); print_r($output);
hello.js
var user_input = "http://example.com/"; var casper = require('casper').create({ verbose: true, logLevel: 'error', pageSettings: { loadImages: false, loadPlugins: false } }); casper.start(user_input, function() { this.echo(this.getTitle()); }); casper.run();
Итак, как мне передать $ user_input на hello.js. Моя цель состоит в том, что пользователь может ввести URL-адрес, который затем очищается.
Я сам нашел ответ.
Кажется, phantomjs и casperjs поддерживают аргументы командной строки http://phantomjs.org/api/system/property/args.html
Теперь мой скрипт выглядит так.
test.php
$user_input = $_POST['user_input']; putenv("PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs"); exec('/usr/local/bin/casperjs hello.js $user_input 2>&1',$output); print_r($output);
hello.js
var system = require('system'); var args = system.args; var address = args[4]; //In my case 4 was the argument for $user_input, yours might be different, depending on your server setup. var casper = require('casper').create({ verbose: true, logLevel: 'error', pageSettings: { loadImages: false, loadPlugins: false } }); casper.start(address, function() { this.echo(this.getTitle()); }); casper.run();