无法使用casperjs evaluate和__doPostBack函数进行导航

时间:2014-08-03 18:53:24

标签: javascript web-crawler phantomjs casperjs evaluate

当我尝试在具有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。

提前致谢。如果您需要更多详细信息,请与我们联系。

1 个答案:

答案 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()函数并且因为表单而崩溃了投入不存在)