CasperJS单击具有AJAX调用事件(CasperJS click event having A

2019-07-17 17:18发布

我试图通过模拟使用CasperJS与phantomJS 1.7.0事件从一个网站抓取数据。

我能够模拟正常的单击事件并选择事件。 但我的代码失败在以下情形:

当我在按钮/锚等点击远程页面上,远程页面上点击启动AJAX调用/ JS调用(取决于如何在该网页是由程序员来实现)。

在JS调用的情况下,我的代码工作,我得到改变的数据。 但用于AJAX调用开始点击,我没有得到更新的数据。

为了调试,我试图让元素容器(前,后)的网页源代码,但我看到的代码没有变化。

我试图从10秒至1毫秒范围内设定的等待时间,但以不反映在行为上的任何变化。

下面是我点击的代码。 我使用CSS路径,其表示该元件(一个或多个),以单击的阵列。

/*Click on array of clickable elements using CSS Paths.*/
fn_click = function(){
casper.each(G_TAGS,function(casper, cssPath, count1) 
                    {
                            casper.then ( function() {
                            casper.click(cssPath);

                            this.echo('DEBUG AFTER CLICKING -START HTML ');
                            //this.echo(this.getHTML("CONTAINER WHERE DETAILS CHANGE"));
                            this.echo('DEBUG AFTER CLICKING -START HTML');
                            casper.wait(5000, function() 
                                                    {   

                                                        casper.then(fn_getData);
                                                    } 
                                    );
                            });     
                    });
};

更新:

我试图用从phantomJS远程调试选项,调试上面的脚本。 这是行不通的。 我是在Windows上。 我会尝试在Ubuntu上运行远程调试,以及。

请帮我。 我希望有这方面的帮助。

更新:

请看看下面的代码作为样本。

https://gist.github.com/4441570

点击前和点击后内容相同。

我点击排序下标签(票/活动等)提供的选项。

Answer 1:

今天我有同样的问题。 我发现这个职位,它把我的jQuery的方向。

一些测试后,我发现,已经有装载在该网页上一个jQuery。 (一个很老的版本,虽然)

加载其他的jQuery之上的,打破所做的任何JS调用,因此也,做一个Ajax调用的链接。

为了解决这个问题,我发现http://api.jquery.com/jQuery.noConflict/

我增加了以下我的代码:

    this.evaluate(function () { jq = $.noConflict(true) } ); 

这是以前分配到$的东西都会被恢复的方式。 而你注入的jQuery是目前正在“JQ”可用。

希望这可以帮助你们。



文章来源: CasperJS click event having AJAX call