文本框中的值设置在phatomjs2.1.1中不起作用

时间:2017-05-30 11:05:17

标签: jquery phantomjs

我正在尝试使用phantomjs v2.1.1中的jquery v1.6设置登录ID和密码,但即使在设置凭据并单击“提交”按钮后,也会显示页面以输入登录名和密码。我的凭据在页面上正确设置,我知道这是因为我正在截取页面的截图(参见附件) enter image description here 我已经看到了与这个问题相关的所有答案



var page = require('webpage').create();
page.onConsoleMessage = function(msg) {
  console.log(msg);
}
page.open('example.com', function(status) {
  if (status !== 'success') {
    console.log('Unable to access network');
  } else {
    console.log("success")
  }
  page.render('home.png');
  page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
    console.log("jquery loaded");
    page.evaluate(function() {
      $('input[id="login-form-username"]').val("abc");
      $('input[id="login-form-password"]').val("adfsdf++");
      $(".aui-button").click();
    });
    page.render('in.png');

    phantom.exit();
  });
});




1 个答案:

答案 0 :(得分:0)

在您点击“登录”按钮后立即退出脚本。尝试使用超时来查看您是否已登录:

page.evaluate(function() {
  $('input[id="login-form-username"]').val("abc");
  $('input[id="login-form-password"]').val("adfsdf++");
  $(".aui-button").click();
});
page.render('1-before.png');
setTimeout(function(){
     page.render('2-after.png');
     phantom.exit();
}, 5000);

当然,这是最粗暴的做法。理想情况下,您会怀疑page.onLoadfinished回调会在每次时加载页面时触发,在您的情况下两次:第一次打开页面输入凭据,第二次发送表单后。