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 の remote-debug オプションを使用しようとしました。機能していません。私は窓にいます。Ubuntu でもリモート デバッグを実行してみます。
私を助けてください。これについて何か助けていただければ幸いです。
アップデート:
サンプルとして以下のコードをご覧ください。
https://gist.github.com/4441570
クリック前とクリック後の内容は同じです。
タグ (投票 / アクティビティなど) の下にある並べ替えオプションをクリックしています。