Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
            }
        }
Example #5
0
        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);
            }
        }
Example #6
0
 public FindByAttribute(FindByType criteria, string textCriteria, WaitingConditionType waitConditiontype = WaitingConditionType.NoWait)
 {
     Criteria          = criteria;
     TextCriteria      = textCriteria;
     WaitConditionType = waitConditiontype;
 }
Example #7
0
 private IWebControl GetElementBy(FindByType criteria, string textCriteria, Type type, WaitingConditionType waitCondition = WaitingConditionType.NoWait)
 {
     return(page.GetElementBy(criteria, textCriteria, type, waitCondition));
 }
Example #8
0
 public IWebControl GetElementBy(FindByType criteria, string textCriteria, Type type, WaitingConditionType waitCondition = WaitingConditionType.NoWait)
 {
     return(Manager.FindElementBy(criteria, textCriteria, type, waitCondition));
 }