3

私は、DOM がロードされた後も JavaScript がページ上で実行され続け、ページに要素を追加する Web ページを持っています。すべての JavaScript が実行された後、jquery イベント page.loaded を起動して、すべての JavaScript が実行された後に何かを行うことに関心のあるページ上のコンポーネントが実行できるようにします。

casperjs/phantomjs を使用してこの Web ページのテストを自動化しようとしています。jQuery ページの読み込みイベントが発生した後にのみ、ページ上の要素を調べたいと考えています。これを行うにはどうすればよいですか?

4

1 に答える 1

7

ページ環境で何かが起こるのを待つために、 waitForファミリー関数を見てください。何らかの要素またはテキストが DOM で使用可能になるのを待つか、特定の jQuery リスナーを直接追加して、以降の手順を処理することができます。

casper.start('test.html', function() {
    this.evaluate(function() {
        $(document).on('site:loaded', function() {
            window.siteLoaded = true;
        });
    });
});

casper.waitFor(function() {
    return this.evaluate(function() {
        return window.siteLoaded === true;
    });
});

casper.then(function() {
    // process further
});

注:これは実際の疑似コードです。目的は概念を説明することだけです。

于 2012-11-20T07:38:07.380 に答える