我正在尝试通过登录并执行一些操作来为我的网站编写测试。我有一个非常接近工作的脚本,但是有一个我无法规避的关键缺陷。请参阅下面的逻辑
var phantom = require('phantom');
var rl = require('readline-sync');
var Spooky = require('spooky');
// Go to login page
spooky.start(url);
// Generate an image of the captcha
spooky.then(function () {
this.capture('captcha.png');
});
// Fill in login form
spooky.then([{
captcha: new Captcha()
}, function () {
this.fill('form#login-form', {
'username': 'username',
'password': 'password',
'recaptcha_response_field' : captcha.phrase
});
}]);
spooky.wait(5000, function() {
this.capture('afterlogin.png');
});
spooky.run();
function Captcha() {
return {
phrase: ask("Enter Captcha Phrase: ")
}
}
function ask (msg, options){
return rl.question(msg, options)
}
所以,这会很好地生成图像,很好地填写表格。问题在于注入“new Captcha()”函数。例如,如果我不需要先查看表单的图像,我可以输入我的用户名并使用 ask 函数传递,它会全部填写。但这似乎在令人毛骨悚然的承诺之前进行了评估。
当我运行脚本时,它首先要求输入短语,然后在我输入后它会生成图像。我需要在询问短语之前生成图像。如果有人能对我的问题有所了解,那就太好了!如果您需要更多信息,请告诉我。