3

アプリケーションのテスト ツールとして casperjs を使用しています。ここで奇妙な問題に直面しています。

casper.then(function () {
    this.click('a[href="/ui/thunder/"]')

})
casper.then(function () {

    this.test.assertUrlMatch(/ui\/thunder\/$/, 'Redirected to cloud page');
console.log(this.getHTML());
});

このコードを書くと、ui/thunder ページにリダイレクトされ、コンソール ログ this.getHTML() にページの完全な html が表示されますが、一部の情報がまだ不足しています。

ページが読み込まれている間、いくつかの REST API 呼び出しが行われ、データが画面に読み込まれますが、casperjs はサーバーからのデータを表示しません。

例: ページが読み込まれると、REST サービス /auth/users が呼び出されます。これを<div class="user"></div>タグに表示します。

ブラウザで見ると、このように埋められています

<div class = "user">
<div class "userName">User1</div>
<div class "userName">User2</div>
</div>

しかし、this.getHTML() の casperjs で console.log を実行すると、<div class="user"></div>(ユーザーなしの空のタグ) が取得されます。

なぜこれが起こっているのですか?

4

2 に答える 2

1

URL が実際にブラウザーに読み込まれるまで待つことをお勧めします。

casper.then(function () {
    this.click('a[href="/ui/thunder/"]')
});

casper.waitFor(function() {
    return /ui\/thunder\/$/.test(this.getCurrentUrl());
}, function () {
    console.log(this.getHTML());
});
于 2013-05-09T15:43:40.843 に答える
0

Casperjs の Webkit が私のページをレンダリングできませんでした。これは、firefox/chrome/IE では検出されなかった小さな JavaScript バインディング エラーがあったためです。Konqueror をダウンロードしたところ、ページがレンダリングされないことがわかりました。そのバインドの問題を修正すると、casperjs を使用することで私の生活がずっと楽になりました。

于 2013-05-09T23:38:16.687 に答える