Is there a way to read user input from keyboard for PhantomJS?

房东的猫 提交于 2020-01-11 17:08:29

问题


I'm using PhantomJS to login website and the captcha has to be inputed manually. How can I save the captcha image to disk, and then input the captcha by hand in PhantomJS console?


回答1:


I had the same problem, just use the system module in combination with a page.render() and some argument passing to page.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:


What you're asking sounds nearly impossible.

If I were desperate to do something like this I might consider the following approach:

  • grab the capture, save to disk as image
  • output to the console to tell user image is ready
  • use window.setTimeout to wait 30 seconds
  • user then edits a text file (e.g. /tmp/code.txt) with capture result
  • after 30 seconds the callback in window.setTimeout will read /tmp/code.txt

It's not pretty. But I can't think of any other way off the top of my head.



来源:https://stackoverflow.com/questions/16452131/is-there-a-way-to-read-user-input-from-keyboard-for-phantomjs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!