私は現在、InternetExplorerDriverを使用してASP.NET MVCアプリケーションに対してC#でSelenium 2/WebDriverを使用して概念実証を支援しています。Selenium2/WebDriverを使用してJavaScriptアラートを確実に待つことはできますか?
アプリケーションでは、レコードが保存されたことをユーザーに通知するための標準パターンが使用されます。これは、TempDataが "Record saved successfullyefully"を含むように設定し、TempDataがビューに存在する場合、ビューはメッセージを警告します。
この機能のSeleniumテストに取り組む一方で、我々は、C#/セレンテストコードの下からinconstitant動作を受けている。
_driver.Navigate().GoToUrl(_baseUrl + "/Amraam/List");
_driver.FindElement(By.LinkText("Create New")).Click();
_driver.FindElement(By.Id("txtAmraamSerialNumber")).SendKeys("CC12345");
var selectElement = new SelectElement(_driver.FindElement(By.Id("LocationId")));
selectElement.SelectByText("Tamworth");
_driver.FindElement(By.Id("btnSave")).Click();
var wait = new WebDriverWait(_driver, defaultTimeout);
IAlert alert = wait.Until(drv => drv.SwitchTo().Alert());
_alertText = alert.Text;
alert.Accept();
Assert.That(_alertText, Is.EqualTo("Record successfully saved"));
時間の約50%、Seliniumは
で失敗しますOpenQA.Selenium.NoAlertPresentException:アクティブなアラートがありません
問題を再現するための正確な方法を見つけて、不一致の側面について心配しています。一貫して失敗した場合は、問題をデバッグして追跡することができます。
乾杯なります。実際には、これはセレンの問題ではありませんでしたが、テスト中のアプリケーションで、ボタンクリックによるjavascriptイベントの順序付け(質問しないでください...)とにかく、セレンはそれ自身の動作をしていました。 @Naishy、あなたの反応はすばらしく見えます。そうでなければ、私たちはそれを試してみました。 –
メソッドグループ構文を使用すると、最後の行を少し簡潔にすることができます。 'IAlert alert = wait.Until(AlertIsPresent);'。 –
今すぐ使用できます ExpectedCondition.AlertIsPresent 参照:http://stackoverflow.com/a/24550934/200824 –