public static By First <T>() where T : IWebElement { string xPath = ""; foreach (var expr in DOMElementXPathFactory.Get <T>()) { xPath += string.Format(".//{0} | ", expr); } xPath = "(" + xPath.TrimEnd(' ', '|') + ")[1]"; return(OpenQA.Selenium.By.XPath(xPath)); }
private static IList <T> GetByXPath <T>(ISearchContext context) where T : WebElement, new() { string xPath = ""; string start = ".//"; foreach (var expr in DOMElementXPathFactory.Get <T>()) { xPath += string.Format("{1}{0} | ", expr, start); } xPath = "(" + xPath.TrimEnd(' ', '|') + ")"; Func <IWebElement, T> create = WebElement.Create <T>; return(context.FindElements(OpenQA.Selenium.By.XPath(xPath)).Select(create).ToList()); }