Uderzyłem głową o ścianę, próbując wybrać opcję z listy wyboru select2 select ajax z selenowym webdriverem. Udało mi się sprawić, żeby działał z webrowerem IE, ale nie firefoxem. Oto moja hacky rozwiązanie dla IEObsługa Select2 z Selenium webdriverem
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);
}
W Firefoksie, to rozwiązanie działa, aż do osiągnięcia punktu SendKeys zadzwonić gdzie po prostu zawiesza się i przechodzi do następnego etapu bez faktycznie zapłonów select2 do wypełnienia wybranego elementu.
Mam również zmęczony przy użyciu api http://code.google.com/p/selenium/wiki/AdvancedUserInteractions z podobnymi wynikami.
Czy ktoś już wcześniej miał podobny problem?
FWIW, musiałem użyć 'ClickAt' 5,5 zamiast kliknięć, aby to zadziałało. – Daniel
@Daniel: Bardziej prawdopodobne jest, że nakładają się na siebie inne elementy. Jaka wersja? Którą przeglądarkę? –
To jest w Selenium 2.4.0 w FF. Używam IDE, ale spodziewam się, że zachowanie będzie podobne. Jestem nowy w Selenium, ale nie mogę sobie wyobrazić, co spowodowałoby, że kliknięcie nie zadziała, gdy kliknie to. Zachowanie za pomocą kliknięcia nie powoduje wyświetlenia menu wyboru2. Twoja odpowiedź była pomocna w doprowadzeniu mnie do właściwych elementów ... – Daniel