2016-04-04 4 views
4

私がテストしているページには、同じサイトの別のページに移動するためのボタンがあります。そのボタンをクリックした後、続行する前にそのページが読み込まれるのを待っています。通常は、ロードするページ上の要素を待つだけですが、最近nightwatch/seleniumを更新してからwaitForElementPresent()テストが機能しなくなりました。問題をデバッグする過程で、新しいURLが読み込まれるのを待つのが理にかなっていると思っていましたが、それを行う夜間の方法はありません。一時停止()とそれに続くassert.urlContains()で待機をハードコードできますが、より良い方法が必要です。助言がありますか?今回のうち第二のウェイトに、私ははっきりとブラウザ表示する(Windows 8.1上のFirefox 45.0.1)に新規ページを見ることができるにもかかわらず夜間に新しいURLが読み込まれるのを待つ適切な方法は何ですか?

this.waitForElementVisible(runCSS,3000) 
    .click(runCSS) 
    .waitForElementPresent(newPageElementCSS,5000) 

しかし:働くために使用何

+0

アップデート後にテストがうまくいかない場合は、おそらく最新版のselenium-server-standaloneも更新しようとしますか?古いバージョンや最新のmozillaとの互換性の問題がありました。 – anasarbescu

答えて

0

Nightwatch.jsでは、DOMの 'body'要素を使用してページを読み込むのを待つと思います。 1秒間ページを待つ場合は、次のようにします。コマンド.waitForElementVisible('body', 1000)を使用して達成します。 2番目のパラメータはms単位で測定されます。

+1

古いページにbody要素がある場合、これは必ずしも機能しません。新しいページがまだロードされておらず、古いページがまだ表示されている場合(リンクをクリックした直後)、古いページに 'body'があると仮定し、新しいページが読み込まれる前にこの条件を満たすと仮定します。あなたが新しいページに存在することを知っている要素を待つのが良いし、最初のものには存在しない(もし可能であれば) – GrayedFox

+1

GrayedFoxのコメントに追加するには、 HTML5ナビゲーションのページアプリケーション - ページはロードされませんが、代わりにページのコンテンツが置き換えられ、 'history.pushState()'を使用してURLが変更されます –