public SelectElement(IWebElement element, IWebDriver driver) : base(element, driver) { if (element.TagName == "select") { OldStyleSelect = new OpenQA.Selenium.Support.UI.SelectElement(element); LazyAvailableOptions = new Lazy <IList <IWebElement> >(() => OldStyleSelect.Options); LazySelectedOptions = new Lazy <IList <IWebElement> >(() => OldStyleSelect.AllSelectedOptions); } else { var listId = element.GetAttribute("list"); LazyAvailableOptions = new Lazy <IList <IWebElement> >(() => driver.FindElements(By.XPath($"//datalist[@id='{listId}']/option"))); LazySelectedOptions = new Lazy <IList <IWebElement> >(() => new List <IWebElement>()); var value = element.GetAttribute("value"); if (!string.IsNullOrWhiteSpace(value)) { SelectedOptions.Add(AvailableOptions.First(o => o.GetAttribute("value") == value)); } } }