Selenium WebDriver を使用して Web サイトをテストしています。LoginPage
、 、HomePage
およびを表す PageObjects がありManagementPage
ます。私のテストは最初にログインし、 を返しHomePage
、次に を返すボタンをクリックしますManagementPage
。次に、一連のものをチェックし、リンクをクリックして に戻りHomePage
、ログアウト リンクをクリックします。
これは、まったく使用しなくても、Chrome で問題なく動作pageLoadTimeout
します。ただし、Firefox ではNoSuchElementException
、ログアウト リンクをクリックしようとするとエラーが発生します。これは、ログアウト ボタンをクリックしようとしたときにページが完全に読み込まれていないことが原因であると想定しています。driver.manage().timeouts().pageLoadTimeout(5000, TimeUnit.MILLISECONDS)
そのため、ドライバーを作成した直後に、テストの開始時に a を配置しました。それでも同じエラーが発生します。タイムアウトを に変更する5 milliseconds
と、ページが読み込まれずに aTimeOutException
がスローされるため、タイムアウトが機能していることがわかります。
driver.manage().timeouts().pageLoadTimeout(5000, TimeUnit.MILLISECONDS)
をのコンストラクターに移動すると、HomePage
すべて正常に動作します。したがって、すべての PageObject にタイムアウトを設定することで問題を解決できます。
これをドライバーごとに1回だけ設定できるようにしたいと思います。これは、この質問から行うことを意図していると収集したものです。しかし、この質問は、pageLoadTimeout がリンクをクリックしても機能しないことを示しています。
他にやらなければならないことはありますか?または、ドライバーが PageObject に渡されると、タイムアウトがリセットされますか? コンストラクターで行うことは次のとおりであるため、それがどのように発生するかわかりません。
this.driver = driver;