【问题标题】:CasperJS Ajax click captureCasperJS Ajax 点击捕获
【发布时间】:2014-03-16 21:37:54
【问题描述】:

我正在尝试抓取网页。网站上有一个 ajax 按钮(一个 div),当单击它时,它会在页面上附加更多结果(例如显示 20 个结果)。我想点击3次。

使用下面的代码:

casper.then(function() {
        for(var i=1; i<=3; i++){
            casper.evaluate(function(){
                $("div.showMore").click();
                return true;
            })
            casper.wait(5000, function then(){
                this.capture('image.png');
            })
        }
})

但它只是在没有点击的情况下捕获页面。我确信这段代码会点击..

$("div.showMore").click();

我通过 chrome 控制台推送/尝试来检查它。

那我错过了什么?

【问题讨论】:

    标签: javascript ajax casperjs


    【解决方案1】:

    JavaScript 因其异步特性而疯狂。我会特别说明您在一个功能中的点击到下一个功能。这不是最理想的解决方案,但您的代码工作方式很可能是 Casper 在 for 循环之前或期间截取屏幕截图。所以你的更改没有被注册。尝试将其拼写成四个不同的 casper 函数,看看结果如何。

    casper.then(function() {
            this.evaluate(function(){
                $("div.showMore").click();
            });
    
    casper.wait(3000, function() {
            this.evaluate(function(){
                $("div.showMore").click();
            });
    
    casper.wait(3000, function() {
            this.evaluate(function(){
                $("div.showMore").click();
            });
    
    casper.wait(5000, function then(){
                this.capture('image.png');
            });
    

    【讨论】:

    • 谢谢你的答案。但不幸的是,它没有帮助。我注意到的是,没有循环它甚至无法工作。 $("div.showMore").trigger('click'); 也没有帮助.. 或者document.querySelectorAll(".showMore")[0].click(); 似乎没有人点击按钮。有什么想法吗?
    • 请注意:所有提到的点击方法都通过 Chrome 控制台工作。可能是 CasperJS 的错误?
    • 我认为它有时可能很挑剔,我点击的最佳方法是使用 casper.click(x('with_xpath_here'));这是非常失败的证明。
    • 这是 jquery 冲突。我从这篇文章中得到了帮助:stackoverflow.com/questions/14098483/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    相关资源
    最近更新 更多