私はCasperJSがテストでどのように動作するかを理解しようとしています。私が達成しようとしているのは、準備ができて完全にロードされているときに、ページのいくつかの要素のスクリーンショットを撮ることです。私はそれが私が探しているローディングを持っている例としてWhatsapp Webを使用しています。CasperJS waitFor *()は非常に不明確な動作をしています
これは私の実装です:
var casper = require('casper').create({
remoteScripts: [
'http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js',
'https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.6.1/lodash.js'
],
pageSettings: {
userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.1500.71 Safari/537.36'
},
viewport: {
width: 1280,
height: 1024
},
waitTimeout: 60000,
logLevel: 'debug',
verbose: true
});
casper.start('https://web.whatsapp.com/', function(){
this.echo('Starting...')
this.waitForSelector('.qrcode', function() {
this.captureSelector('whatsapp.png', 'html');
this.echo('Screeshot Taken!')
});
});
casper.run();
はCasperJSは、それは非常に長い時間が、60年代のページへ<div class="qrcode"></div>
を見つけることができませんと思われます。 ここには何が欠けていますか? waitFor *()は何をすると思われますか?
INFO:PhantomJS v2.0.0デベロッパー
注:私が言うことができるか、実際には非同期に動作waitForSelector()
のようになりますされ、ウェイト()関数は、そのように実装する必要がなぜ私は思ったんだけど、何私は、ウォッチャー(または無限ループ)のようなものが、DOMを連続的に取得して、そのセレクタで一定の時間内に要素をチェックするものと期待しています。
どのPhantomJSバージョンを使用しますか? 'resource.error'、' page.error'、 'remote.message'、' casper.page.onResourceTimeout'イベントに登録してください([Example](https://gist.github.com/artjomb/4cf43d16ce50d8674fdf#file) -2_caspererrors-js))。多分エラーがあるかもしれません。 PhantomJS 2.xはいくつかのエラーを隠すことが知られているので、1.9.8も試してみるべきです。 –
コードは正常です。ページが少なくともロードされているかどうか少し調べてからスクリーンショットを撮ったことがありますか?なぜあなたはリモートスクリプトを読み込んでいますか?そのような古いバージョンのjQueryが原因かもしれません。 –
あなたのお返事ありがとうございます@ArtjomB。私はこんなにこだわっていた。あなたが求めている情報で私の質問をアップグレードし、私は1.9.8にダウングレードしようとしています。私はリモートスクリプトを読み込んでいたのはちょうど速かったからです。 @ArtjomB。 –