2016-03-21 9 views
-1

私は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を連続的に取得して、そのセレクタで一定の時間内に要素をチェックするものと期待しています。

+0

どの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も試してみるべきです。 –

+0

コードは正常です。ページが少なくともロードされているかどうか少し調べてからスクリーンショットを撮ったことがありますか?なぜあなたはリモートスクリプトを読み込んでいますか?そのような古いバージョンのjQueryが原因かもしれません。 –

+0

あなたのお返事ありがとうございます@ArtjomB。私はこんなにこだわっていた。あなたが求めている情報で私の質問をアップグレードし、私は1.9.8にダウングレードしようとしています。私はリモートスクリプトを読み込んでいたのはちょうど速かったからです。 @ArtjomB。 –

答えて

0

最後に私はそれを得ました! それはちょうど私がやったことPhantomJSCasperJS

をインストールするbrewを使用しないよう、バージョンの問題だったが、実際にだった:

  • brew uninstall phantomjs && brew uninstall casperjs
  • npm i -g phantomjs && npm i -g casperjs

そして今、私のコードワーク予想通り。 このバグは、実際にこのエラーをトリガーするPhantomJSのv1.9.8、に関連している:あなたはOSX上にある場合は、NPMを使用して再インストールし、うまく動作します

Unsafe JavaScript attempt to access frame with URL about:blank from frame with URL file:///usr/local/Cellar/casperjs/1.1-beta3/libexec/bin/bootstrap.js. Domains, protocols and ports must match.

。 お待ちしています。

+0

QRコードを今キャプチャできますか? face ** missing = cryptoSha256、cryptoAesCbc ** – snofty

+1

@snofty私は、テストの時に、何か変わったかどうかを実際には知りません。はい:https://github.com/nerder/whosup/blob/master/whosapp.js これは最終的なコードでした(品質は申し訳ありませんでしたjust4fun) –

関連する問題