1

我正在尝试通过登录并执行一些操作来为我的网站编写测试。我有一个非常接近工作的脚本,但是有一个我无法规避的关键缺陷。请参阅下面的逻辑

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 函数传递,它会全部填写。但这似乎在令人毛骨悚然的承诺之前进行了评估。

当我运行脚本时,它首先要求输入短语,然后在我输入后它会生成图像。我需要在询问短语之前生成图像。如果有人能对我的问题有所了解,那就太好了!如果您需要更多信息,请告诉我。

4

0 回答 0