c# - Handling Select2 with Selenium webdriver -


i've been banging head against wall trying select option ajax enabled select2 select list selenium webdriver. i've managed working ie webdriver not firefox. here hacky solution ie

 public static void setselect2option(this iwebdriver driver, 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);     } 

in firefox, solution works until point of sendkeys call hangs , moves on next step without firing select2's events populate selected item.

i've tired using http://code.google.com/p/selenium/wiki/advanceduserinteractions api similar results.

has run similar issue before?

could please show locators well? here tested without issues.

note

  1. to open select box, use css selector #s2id_e1 .select2-choice, or equivalent xpath.
  2. make sure #select2-drop visible one, css selector #select2-drop:not([style*='display: none']), or equivalent xpath.
  3. make sure click selectable item using subcontainerclass + .select2-results li.select2-result-selectable, or equivalent xpath.
var driver = new firefoxdriver(); driver.url = "http://ivaynberg.github.io/select2/";  var select2product = driver.findelement(by.cssselector("#s2id_e1 .select2-choice")); select2product.click();  string subcontainerclass = "#select2-drop:not([style*='display: none'])"; var searchbox = driver.findelement(by.cssselector(subcontainerclass + " .select2-input")); searchbox.sendkeys("ohio");  var selecteditem = driver.findelements(by.cssselector(subcontainerclass + " .select2-results li.select2-result-selectable")).first(); selecteditem.click(); 

Comments