代码之家  ›  专栏  ›  技术社区  ›  khadija.EL

Casperjs:如何操作javascript分页(javascript重载的链接)

  •  0
  • khadija.EL  · 技术社区  · 7 年前

    使用casperjs,我正在从一个网站上抓取一些信息,在这个页面上有一个通过重载链接创建的页面

    <a id="ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2"     
    href="javascript:;//ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2"><img 
    src="themes/images/fleche-suivant.gif" alt="Aller à la page suivante"></a>
    

    有两种方法可以访问下一页:

    1. 单击“下一步”按钮 as shown in this image

    2. 或更改字段的值 as shown in this pic 然后单击键盘上的enter键

    我两种方法都试过了,但都没用,有人能帮我编写其中一种吗。

    var mouse = require("mouse").create(casper);
    var url = '';
    var url2 = '';
    var tst;
    casper.test.begin('Scraping start', function(test) {
    casper.start(url, function() {
        this.test.pass('Opened 1st page');
    })
    .thenOpen(url2, function(){
        this.test.pass('Opened 2nd page')
    })
    .then(function(){
    
     //these are the tow methodes I try to click on the next button
    //this.mouse.click("#ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2");   
    this.thenClick(' div.liens a#ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2');
    })
    
    .then(function() {
        tst = this.evaluate(function() {
        return 
    __utils__.getFieldValue( 
    '[name="ctl0$CONTENU_PAGE$resultSearch$numPageTop"]');   
    });
    })
    .run(function() {
        console.log(tst);
        test.done();
    });
    });
    

    casperjs的版本是1.1.4,我使用的是phantom浏览器

    1 回复  |  直到 7 年前
        1
  •  0
  •   Mario Nikolaus    7 年前

    这通常会导航到我这边的第二页。试试看,你还可以保存屏幕截图,以便进行更多的调试。

    var casper = require('casper').create();
    var url = 'https://www.marchespublics.gov.ma/index.php5?page=entreprise.EntrepriseAdvancedSearch&AllCons&EnCours&domaineActivite=1.15';
    
    casper
        .start(url, function() {
            this.echo('Opened page ' + this.evaluate(function() {
                return document.title;
            }), 'INFO');
        })
        .then(function() {
            if (this.exists('a[id="ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2"]')) {
                this.echo('the heading exists');
            } else {
                this.echo('Does not exist');
            }
        })
        .thenClick('div.liens a#ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2')
        .wait(5000)
        .then(function() {
            this.capture('exit.png');
        })
        .run();
    

    希望这有帮助!