我正在尝试使用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();
});
});

答案 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回调会在每次时加载页面时触发,在您的情况下两次:第一次打开页面输入凭据,第二次发送表单后。