使用casperjs设置页面和表单

时间:2019-04-16 14:57:13

标签: casperjs

您好,我需要使用浏览器自动化功能在我的网站中抓取结果信息。我有这个脚本:

var casper = require('casper')。create(); console.log(“ casper create OK”);

casper.start(“ https://portale.spefin.it/anagraph/legalperson/atc”,function(){ console.log(“ Connexion URL OK”);

// set a wait condition to make sure the page is loaded (particularly iframe in my case)

    //fill out the form 
    this.fillSelectors("form[name='login']",{
        'input#username' : "XXXXXXXXX",
        'input#pw' : "XXXXXXXX"
    });
    console.log("Renseignement login et pass OK");

    // click the login button 
    this.click("button[type='submit']");
    console.log("Passage bouton login OK");


    // switch to iframe (won't be necessary for most)
    this.page.switchToChildFrame('https://portale.spefin.it/anagraph/legalperson/atc');
    console.log("Switch page OK");

    this.wait(5000,function(){
console.log("Attente 5 sec OK");

    this.fillSelectors("form[name='advancedFilterForm']",{
       'input#tax_code' : "11057560150"


    });
    console.log("partita iva ok!");

        // Test d'une zone sur la page pour valider la connexion
        //casper.waitForSelector('.area-status', function() {
        //console.log("Validation element sur la page OK");
        //});
}); 

});

问题是未设置页面且找不到表单。...请帮助我!

1 个答案:

答案 0 :(得分:0)

首先,我建议使用verboselogLevel进行如下测试:

var casper = require('casper').create({
    verbose: true,
    logLevel: "debug"
});

您还可以更频繁地使用then承诺。 相信我,对您有帮助

使用waitForSelector进行救援。

请找到其他版本的代码。

casper.start("https://portale.spefin.it/anagraph/legalperson/atc").then(function(){
    this.waitForSelector("form[name='login']", function(){
        /*form found*/

        //the [true] parameter will submit the form, no need for the button click
        this.fillSelectors("form[name='login']",{
            'input#username' : "XXXXXXXXX",
            'input#pw' : "XXXXXXXX"
        }, true);

        this.then(function(){
            //possibly no need for the wait but...
            //if you really want to use it
            this.wait(5000,function(){
               //In my honest opinion you don't need the [switchToChildFrame]
               //but instead use [waitForSelector]

               this.waitForSelector("form[name='advancedFilterForm']", function(){
                   /*form found*/

                   //the [true] parameter will submit the form
                   this.fillSelectors("form[name='advancedFilterForm']",{
                       'input#tax_code' : "11057560150"
                   }, true);

                   this.then(function(){
                       this.waitForSelector(".area-status", function(){
                           /*element found*/
                           //do what you must perhaps get the info

                           require('utils').dump(this.getElementInfo('.area-status'));

                       }, function(){
                           /*element not found*/
                       })
                   });

               },function(){
                   /*could not find advancedFilterForm*/
               })
            });
        });

    },function(){
        /*form not found*/
    });
});
  

注意:此代码未经测试。

希望有帮助。 :)

刮擦效果好