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

Casperjs: How to manipulate javascript paging( links overloaded by javascript)

我正在使用 casperjs 从网站上抓取一些信息,在此页面中有一个通过重载 link

创建的分页
<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并单击键盘上的回车键

我已经尝试了两种方法,但都没有用,有人可以帮我编写其中一种方法吗?

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浏览器

这通常会导航到我这边的第 2 页。试试吧,您也可以保存屏幕截图以供更多调试之用。

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();

希望对您有所帮助!