Я ударился головой о стену, пытаясь выбрать опцию из списка выбора select2, выбранного ajax, с веб-селеном селена. Мне удалось заставить его работать с IE webdriver, но не с firefox. Вот мое хакерское решение для IE
public static void SetSelect2Option(this IWebDriver driver, By locator, string subContainerClass, string searchTerm, TimeSpan? ajaxWaitTimeSpan = null)
{
var select2Product = driver.FindElement(locator);
select2Product.Click();
var searchBox = driver.FindElement(By.CssSelector(subContainerClass + " .select2-input"));
searchBox.SendKeys(searchTerm);
if (ajaxWaitTimeSpan != null)
{
driver.Manage().Timeouts().ImplicitlyWait(ajaxWaitTimeSpan.Value);
}
var selectedItem = driver.FindElements(By.CssSelector(subContainerClass + " .select2-results li")).First();
selectedItem.Click();
selectedItem.SendKeys(Keys.Enter);
}
В Firefox это решение работает до момента вызова SendKeys, где он просто зависает и переходит к следующему шагу, без фактического запуска событий select2 для заполнения выбранного элемента.
Я также устал использовать http://code.google.com/p/selenium/wiki/AdvancedUserInteractions api с похожими результатами.
Кто-нибудь сталкивался с подобной проблемой раньше?