javascript-可以使用casperjs登录到Facebook,但捕获到png仅显示导航栏
作者:互联网
可以使用casperjs登录到Facebook,但捕获到png仅显示导航栏
这是我的代码:facebook.js
casper.start("http://www.facebook.com/login.php", function(response) {
if (this.exists('[name="lsd"]')) {
this.page.evaluate(function(a,b) {
document.querySelector("input[name='email']").value = a
document.querySelector("input[name='pass']").value = b;
document.querySelector("#login_form").submit();
console.log("Login submitted!");
},user_email,user_pass);
} else {
this.echo('[name="lsd"] not found', 'ERROR');
phantom.exit();
}
this.capture('img/'+user_email+'_login.png');
});
casper.run();
请帮助我解决问题.
解决方法:
问题是您在提交登录表单后立即捕获页面.您需要稍等片刻才能加载新页面,但这不是Facebook的唯一问题.
>您需要像这样运行CasperJS:
casperjs --ssl-protocol=tlsv1 facebook.js
由于最近有POODLE SSL漏洞. (Other answer)
>当您注册到page.error
时,会弹出多个错误,表明绑定不可用.为此,您需要使用垫片,以便Facebook正常运行.我提供了复制粘贴解决方案here.
现在,等待页面加载的问题…有几种解决方案.
添加一个步骤
这是最简单的方法,并且适用于大多数非单个页面的应用程序.
casper.start("http://www.facebook.com/login.php", function(response) {
this.page.evaluate(function(a,b) {
// login
}, user_email, user_pass);
}).then(function(){
this.capture('img/'+user_email+'_login.png');
}).run();
等待仅在新页面上存在的选择器
这是最可靠的方法,适用于所有页面.
casper.start("http://www.facebook.com/login.php", function(response) {
this.page.evaluate(function(a,b) {
// login
}, user_email, user_pass);
}).waitForSelector("SOMESELECTORLIKEPROFILEBUTTON", function(){
this.capture('img/'+user_email+'_login.png');
}).run();
等待静态时间
这是最不可靠的,但是最简单的.您可能等待的时间比必要的时间长或不够长,以致于操作失败.
casper.start("http://www.facebook.com/login.php", function(response) {
this.page.evaluate(function(a,b) {
// login
}, user_email, user_pass);
}).wait(4000, function(){
this.capture('img/'+user_email+'_login.png');
}).run();
注意:我使用的是promise语法,但这不是必需的.
标签:facebook,capture,casperjs,javascript 来源: https://codeday.me/bug/20191121/2049455.html