2017-07-07 18 views
0

私はDjangoによって構築されたWebアプリケーションを持っていますが、フロントエンドはReactによって構築されています。私は行動とセレンでbddをテストしようとしました。私はChromeウェブドライバとphantomjsを使ってテストを実行しますが、テストはchromeを使ってしか渡されません。私はそれがファントムで実行され、ページが完全にレンダリングされていないことがわかったときにスクリーンショットをキャプチャしました。この問題についていくつかご提案ください。私はファントムを使ってテストするためにさらに設定を行う必要がありますか?ありがとうございました。BDD - Phantomjsではなく、クロムのテストパス

答えて

0

Phantomjsでレンダリングされていないページの部分に存在するロケータ(waitForElementToBePresent)に明示的な待機を追加してみてください。

0

あなたは3つのオプションがあります。

implicitly_wait:

暗黙待って、あなたの要素は4の後に表示されますので、もしそれが要素を検索するためにx秒の最大のを待つことを意味します暗黙的に4秒以上待つように設定した場合、2秒後に表示されます。

インスタンスの作成後にdriver.implicitly_wait(x)を使用してください。

explicitly_wait:

は、明示的に待機し、それがx秒待ちますし、秒が経過した後、あなたが10秒に設定し、要素が4秒後に表示されますので、もしそれが要素を検索することを意味要素は6秒遅れて配置されます。

使用driver.explicitly_wait(x)

time.sleep

インスタンスを作成した後、あなたは寝て、完全にいくつかのアクションを提出した後にロードするためにページを待つために、あなたのプログラムを置くことができます。

フォームを送信したり、ボタンをクリックしたり、ページを読み込んだりしてからtime.sleep(x)を使用してください。

1

これはPhantomJS(ページが完全にレンダリングされていないこと)によく見られる問題で、明示的/暗黙的な待機で解決できるものではありません。あなたのコードに長い(5秒)睡眠を加え、別のスクリーンショットを撮る。

ページが完全にレンダリングされている場合は、@Alex Lucaciの指示に従って、(理想的には)明示的な待機を追加します。

ページがまだ完全にレンダリングされていない場合、PhantomJSはこの場合にはうまく機能しません。個人的には、PhantomJSを使用することについては何も言及していません。なぜなら、それは無数の方法で問題になるからです。しかし、なぜ文字通り誰も実際のブラウザとして使用しないブラウザでテストするのでしょうか?

関連する問題