最新バージョンの Firefox (15.0) と現在の 2.25 Selenium で同様の問題が発生しました。メニュー ヘッダーにカーソルを合わせると、メニュー オプションが表示される Javascript ベースの水平メニューがあります。IWebDriver
私が使用しているコードは次のとおりです。
var menu = driver.FindElement(By.Id("menuId"));
var option = driver.FindElement(By.Id("menuItemId"));
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
Actions actions = new Actions(driver);
actions.MoveToElement(menu, 5, 5).Perform();
wait.Until<bool>((d) =>
{
return option.Displayed;
});
option.Click();
これは IE と Chrome では問題なく動作しますが、Firefox では動作しません。「mouseOver」( MoveToElement
) アクションが発生しないため、メニュー項目が表示されず、テストがタイムアウトします (そして失敗します)。
NUnit からテストを実行しているので、テスト コードに少し構成サポートが組み込まれているので、Web ドライバーを直接使用するか、WebDriverBackedSelenium
(もちろん RC サーバーと組み合わせて)を使用するかを制御できます。 . これにより、構成の問題を回避できるため、「Firefox モード」でテストを実行している場合は、サーバーを呼び出して、ISelenium
代わりに次のようにインターフェイスを使用できます。
selenium.Click("id=menuItemId");
そしてそれはうまくいきます。テストが実行されている「モード」を決定し、それに応じて特定のクリックアクションを呼び出すメソッドがあります。つまり、IWebDriver
インターフェイスを直接使用するか、インターフェイスWebDriverBackedSelenium
を使用するためにラップするかを選択しISelenium
ます。
将来、Firefox ドライバーが機能し始めた場合は、再度構成を介してネイティブで Firefox Web ドライバーを使用するように切り替えることができます。