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.