当我尝试在具有href为__doPostBack函数调用的链接的网站上导航分页时,我从未实现页面更改。
我不确定我错过了什么,所以经过几个小时的搞乱后,我决定看看这里有人能给我一些线索。 这是我的代码(uber-simplified来显示用例)。
var casper = require('casper').create({
verbose: true,
logLevel: "debug"
});
casper.start('http://www.gallito.com.uy/inmuebles/venta');
// here i simulate the click on a link in the pagination list
casper.evaluate(function() {
__doPostBack('RptPagerDos$ctl08$lnkPage2','');
});
casper.then(function() {
console.log(' new location is ' + this.getCurrentUrl());
var i=casper.evaluate(function(){
return $(".aspNetDisabled").text();
});
console.log(i);
});
casper.run();
我尝试使用casper的click()和一个简单的jQuery点击evaluate,但这不起作用,因为href是对__doPostBack函数的调用。
我正在使用casperjs 1.1.0-beta3和phantomjs 1.9.7。我检查了类似的问题,我看到了这篇文章CasperJS : how to call __doPostBack,但那里的解决方案对我不起作用,显然它也不适用于OP。
提前致谢。如果您需要更多详细信息,请与我们联系。
答案 0 :(得分:1)
我能够通过更改
来导航分页casper.evaluate(function() {
__doPostBack('RptPagerDos$ctl08$lnkPage2','');
});
对此:
casper.then(
function(){
casper.evaluate( function() {
var insertHTML='<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /><input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /><input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" />';
$("#Form1 .aspNetHidden").html(insertHTML);
$("#Form1 .aspNetHidden #__EVENTTARGET").val('RptPagerDos$ctl04$lnkPage2');
$("#Form1").submit();
});
}
);
我注意到,即使尝试直接提交表单也是一个问题,看起来由于某种原因,它没有找到它需要的元素(我尝试了casper&#39的fill()函数并且因为表单而崩溃了投入不存在)