编程语言
首页 > 编程语言> > javascript-可以使用casperjs登录到Facebook,但捕获到png仅显示导航栏

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