2016-08-09 11 views
1

マリオネットドライバーにアップデートして以来、 Firefoxはもう待っていません。 基本的には、私はそれがページに "ログアウト"を見つけることによってログインしているかどうかを確認するために、ページが読み込まれるのを待って、ログインします。ここでは、それはそれを見つける私がいることを強調Selenium - FireFox/Marionetteドライバーは待っていません。

を「ログアウト」することはできませんので、それはエラーがスローされますロードするためのページを待っていない、それは、ログインをクリックした後に何が起こっていることである私のセットアップ

// navigate to url "http://..." 
// Find Log In button and .Click() 

WebDriverWait wait = new WebDriverWait(driver, System.TimeSpan.FromSeconds(30)); 
wait.Until(driver1 => ((IJavaScriptExecutor)driver).ExecuteScript("return document.readyState").Equals("complete")); 

// Assert if the page contains "Log out" 

ですこのコードは古いFirefoxドライバ(Marionetteではなく)とChromeのドライバで動作しました。待っていない新しいFirefoxドライバーに問題がある人は誰ですか?

私が明確にされている必要があります申し訳ありませんが、Firefoxのドライバがどの待ちをしていないので、既存の要素を待っていることは動作しません。どちらか

+1

なぜ、あなたはreadyStateを待つのではなく、ログアウトボタンを待っていませんか? –

+0

あなたが使用しているコード、ログインボタンとログアウトボタンのHTML、および取得しているエラーの詳細を記入してください。 – JeffC

+0

私はもっと多くのコードを提供することができますが、現時点ではありません。私が言ったように、以前のFirefoxのドライバとクロムドライバは動作し、待機します。そうすれば、他のドライバのために動作していれば、マリネットは同じ動作をします。 –

答えて

0

テストが失敗している理由は、ジョニーはコメントで述べたものです。ログイン操作の直後にページが準備されるのを待っています。これは、すでに対話しているので、すでに「準備完了」です。あなたがしたいことは、ログオフ要素に対する暗黙の待機を行うことです。これは、いくつかの異なる方法で行うことができます。

wait.Until(ExpectedConditions.ElementExists(By.XPath(xpath))); 

wait.Until(ExpectedConditions.ElementExists(By.CssSelector(csspath))); 

これらのどちらか一つが発見されるログオフ要素に対して30秒(あなた待機要素で定義される)まで待って、ページ上の暗黙の待機を実行します。

+0

問題は、そのすべてを待機していないので、要素を待つことは動作しませんいずれにせよ、これはマリネットドライバーのバグかもしれないと思います。 –

関連する問題