Есть ли способ прочитать пользовательский ввод с клавиатуры для PhantomJS?

Я использую PhantomJS для входа на веб-сайт, и captcha должен вводиться вручную. Как сохранить изображение captcha на диск, а затем ввести captcha вручную в консоли PhantomJS?

Ответ 1

У меня была такая же проблема, просто используйте системный модуль в сочетании с page.render(), а некоторые аргументы передаются на страницу .evaluate.

page.render('pagewithcatpcha.jpg');
page.injectJs('http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js');

var arg1 = consoleRead();

page.evaluate(function (arg1) {
 $('.yourFormBox').val(arg1);
 $('.yourForm').submit();
}, arg1);

function consoleRead() {
 var system = require('system');

 system.stdout.writeLine('CaptchaCode: ');
 var line = system.stdin.readLine();

 return line;
}

Ответ 2

То, что вы просите, звучит почти невозможно.

Если бы я отчаянно хотел сделать что-то подобное, я мог бы рассмотреть следующий подход:

  • захватить захват, сохранить на диск как изображение
  • вывод на консоль, чтобы сообщить, что изображение пользователя готово
  • использовать window.setTimeout для ожидания 30 секунд
  • пользователь затем редактирует текстовый файл (например, /tmp/code.txt) с результатом записи
  • через 30 секунд обратный вызов в window.setTimeout будет читать /tmp/code.txt

Это некрасиво. Но я не могу думать ни о каком другом пути с головы.