private IWebElement GetElement(WebDriverWait wait, WaitingConditionType waitCondition, By by) { IWebElement element = null; if (waitCondition == WaitingConditionType.UntilElementIsExists) { element = wait.Until(ExpectedConditions.ElementExists(by)); } else { element = wait.Until(ExpectedConditions.ElementIsVisible(by)); } return(element); }
public static WaitCondition Until(WaitingConditionType waitingConditionType, string textContained, int timeout = 90) { if (waitingConditionType == WaitingConditionType.UntilElementContains && string.IsNullOrEmpty(textContained)) { throw new WaitElementContainsException( "You have chosen wait until the element contains certain text, but that text is empty, that is not allowed"); } var condition = new WaitCondition { TextContained = textContained, WaitingConditionType = waitingConditionType, Timeout = timeout }; return(condition); }
private IWebElement GetWebElement(FindByType criteria, string textCriteria, WaitingConditionType waitCondition, int timeoutInSeconds) { IWebElement element = null; if (timeoutInSeconds < 1) { timeoutInSeconds = 1; } WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds)); switch (criteria) { case FindByType.ById: { element = GetElement(wait, waitCondition, By.Id(textCriteria)); break; } case FindByType.ByName: { element = GetElement(wait, waitCondition, By.Name(textCriteria)); break; } case FindByType.ByClassName: { element = GetElement(wait, waitCondition, By.ClassName(textCriteria)); break; } case FindByType.ByCssSelector: { element = GetElement(wait, waitCondition, By.CssSelector(textCriteria)); break; } case FindByType.ByXPath: { element = GetElement(wait, waitCondition, By.XPath(textCriteria)); break; } } return(element); }
public IWebControl FindElementBy(FindByType criteria, string textCriteria, Type type, WaitingConditionType waitCondition = WaitingConditionType.NoWait, int timeoutInSeconds = 90) { activeBrowser.RefreshDomTree(); if (waitCondition == WaitingConditionType.NoWait) { return(FindElementBy(criteria, textCriteria, type)); } IWebControl control = null; Element element = null; if (timeoutInSeconds < 1) { timeoutInSeconds = 1; } try { switch (criteria) { case FindByType.ById: { if (waitCondition == WaitingConditionType.UntilElementIsExists) { activeBrowser.Find.ById(textCriteria).Wait.ForExists(timeoutInSeconds * 1000); } else { activeBrowser.Find.ById <HtmlControl>(textCriteria).Wait.ForVisible(timeoutInSeconds * 1000); } element = activeBrowser.Find.ById(textCriteria); break; } case FindByType.ByName: { if (waitCondition == WaitingConditionType.UntilElementIsExists) { activeBrowser.Find.ByName(textCriteria).Wait.ForExists(timeoutInSeconds * 1000); } else { activeBrowser.Find.ByName <HtmlControl>(textCriteria).Wait.ForVisible(timeoutInSeconds * 1000); } element = activeBrowser.Find.ByName(textCriteria); break; } case FindByType.ByClassName: { if (waitCondition == WaitingConditionType.UntilElementIsExists) { activeBrowser.Find.ByAttributes("class=~" + textCriteria).Wait.ForExists(timeoutInSeconds * 1000); } else { activeBrowser.Find.ByAttributes <HtmlControl>("class=~" + textCriteria).Wait.ForVisible(timeoutInSeconds * 1000); } element = activeBrowser.Find.ByAttributes("class=~" + textCriteria); break; } case FindByType.ByCssSelector: { string[] result; string[] stringSeparators = new string[] { "." }; result = textCriteria.Split(stringSeparators, StringSplitOptions.None); activeBrowser.Find.ByExpression("class=" + result[1], "tagname=" + result[0]).Wait.ForExists(timeoutInSeconds * 1000); element = activeBrowser.Find.ByExpression("class=" + result[1], "tagname=" + result[0]); break; } case FindByType.ByXPath: { if (waitCondition == WaitingConditionType.UntilElementIsExists) { activeBrowser.Find.ByXPath(textCriteria).Wait.ForExists(timeoutInSeconds * 1000); } else { activeBrowser.Find.ByXPath <HtmlControl>(textCriteria).Wait.ForVisible(timeoutInSeconds * 1000); } element = activeBrowser.Find.ByXPath(textCriteria); break; } } if (element == null) { throw new CriteriaNotSupportedException("Criteria " + criteria + " is not supported"); } if (type == typeof(ITextBox)) { control = new TelerikTextBox(element); } else if (type == typeof(IButton)) { control = new TelerikButton(element); } else if (type == typeof(IDropDownList)) { control = new TelerikDropDownList(element); } else if (type == typeof(IInputButton)) { control = new TelerikInputButton(element); } else if (type == typeof(ILabel)) { control = new TelerikLabel(element); } else if (type == typeof(IWebControl)) { control = new TelerikBaseControl(element); } else { throw new TypeNotSupportedException("Type " + type.ToString() + " is not supported"); } return(control); } catch (TypeNotSupportedException) { throw; } catch (Exception ex) { throw new ElementNotFoundException("No element found by textcriteria =" + textCriteria, ex); } }
public IWebControl FindElementBy(FindByType criteria, string textCriteria, Type type, WaitingConditionType waitCondition, int timeoutInSeconds = 90) { if (waitCondition == WaitingConditionType.NoWait) { return(FindElementBy(criteria, textCriteria, type)); } IWebControl control = null; IWebElement element = null; try { element = GetWebElement(criteria, textCriteria, waitCondition, timeoutInSeconds); control = GetWebControl(criteria, type, element); return(control); } catch (TypeNotSupportedException) { throw; } catch (Exception ex) { throw new ElementNotFoundException("No element found by textcriteria =" + textCriteria, ex); } }
public FindByAttribute(FindByType criteria, string textCriteria, WaitingConditionType waitConditiontype = WaitingConditionType.NoWait) { Criteria = criteria; TextCriteria = textCriteria; WaitConditionType = waitConditiontype; }
private IWebControl GetElementBy(FindByType criteria, string textCriteria, Type type, WaitingConditionType waitCondition = WaitingConditionType.NoWait) { return(page.GetElementBy(criteria, textCriteria, type, waitCondition)); }
public IWebControl GetElementBy(FindByType criteria, string textCriteria, Type type, WaitingConditionType waitCondition = WaitingConditionType.NoWait) { return(Manager.FindElementBy(criteria, textCriteria, type, waitCondition)); }