我是casperjs的初学者,我正在尝试自动访问网站并抓取一些信息,我启动网址,然后在一个名为“链接”的表中存储一些链接然后我尝试点击该表中的第一个元素(links [0]),最后测试是否存在具有id(“ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2”)的链接。
问题是,我无法获得任何输出,我想这是因为程序首先无法访问链接(links [0]),这就是为什么它找不到id i'我正在寻找。 这是我写的代码。
var url=''; //first link
var casper = require('casper').create();
var links;
var lien;// second link
function getLinks() {
var links = document.querySelectorAll('td a');
return Array.prototype.map.call(links, function (e) {
return e.getAttribute('href')
});
}
casper.start(url);
casper.then(function () {
links = this.evaluate(getLinks);
});
casper.then(function () {
lien = links[0];
});
casper.thenOpen(lien , function(){
if (this.exists('a[id="ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2"]')) {
this.echo('the heading exists');
}
else {console.log('does not exist');
}
});
casper.run(function () {
this.exit();
});`
this is the link I'm trying the find
请注意,我使用的casperjs版本是1.1.4
答案 0 :(得分:0)
为了使其工作,您需要将其包装在测试套件中。至少我是这样做的。我不知道与casper约会,我不知道过去一年是否有任何改变,但以前的问题是你在v1中没有测试套件就无法启动casper。
请使用以下命令
开始在终端中使用以下代码 casperjs test filename.js
在你的filename.js中输入以下代码
var url = 'https://www.marchespublics.gov.ma/pmmp/';
var url2 = 'https://www.marchespublics.gov.ma/index.php5?page=entreprise.EntrepriseAdvancedSearch&AllCons&EnCours&domaineActivite=1.15';
casper.test.begin('Scraping start', 3, function(test) {
casper.start(url, function() {
this.test.pass('Opened 1st page');
})
.thenOpen(url2, function(){
this.test.pass('Opened 2nd page')
})
.then(function() {
if (this.exists('a[id="ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2"]')) {
this.test.pass('the heading exists');
} else {
this.test.fail('Does not exist');
}
})
.run(function() {
test.done();
});
});
有关执行脚本时casperjs的更多详细信息,请尝试使用其他参数(如
)运行它 casperjs test filename.js --verbose --log-level=debug
希望有所帮助
编辑1:
这也适用于没有测试套件只需调用此代码
casperjs filename.js
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')
})
.then(function() {
if (this.exists('a[id="ctl0_CONTENU_PAGE_resultSearch_PagerTop_ctl2"]')) {
this.echo('the heading exists');
} else {
this.echo('Does not exist');
}
})
.run();