예제 #1
0
        bool ExecuteLabelWithSimpleCheck(ExecuteLabelBehavior exe)
        {
            if (_RType != LabelExpectedResultType.Nothing)
            {
                switch (_RType)
                {
                case LabelExpectedResultType.UrlChange:
                    string beforeUrl = Modules.BrowserSupport.GetCurrentUrl();
                    exe();
                    ExecuteSleepAfterIfThereIs();
                    string afterUrl = Modules.BrowserSupport.GetCurrentUrl();
                    return(!beforeUrl.Equals(afterUrl));

                case LabelExpectedResultType.UrlChangeEqualInputData:
                    exe();
                    string url        = Modules.BrowserSupport.GetCurrentUrl().Trim(new char[] { ' ', '/' });
                    string urlCompare = GetInputDataAsString().Trim(new char[] { ' ', '/' });
                    return(url.Equals(urlCompare, StringComparison.CurrentCultureIgnoreCase));

                default:
                    throw new MyExceptions.LabelExecutionResultFailException("Expected result type " + _RType
                                                                             + " has not yet been handled in execute action");
                }
            }
            else
            {
                exe();
                return(true);
            }
        }
예제 #2
0
        bool ExecuteLabelWithCheckCurrentElement(ExecuteLabelBehavior exe)
        {
            if (_elmTarget == null)
            {
                _elmTarget = Modules.BrowserSupport.FindElement(_LabelData.XPath);
            }
            switch (_RType)
            {
            case LabelExpectedResultType.SelfCssClassChange:
                string beforeValue = _elmTarget.GetAttribute("class");
                exe();
                ExecuteSleepAfterIfThereIs();
                string afterValue = _elmTarget.GetAttribute("class");
                return(beforeValue.Equals(afterValue));

            case LabelExpectedResultType.SelfTextChange:
                string beforeText = _elmTarget.Text;
                exe();
                ExecuteSleepAfterIfThereIs();
                string afterText = _elmTarget.Text;
                return(beforeText.Equals(afterText));

            case LabelExpectedResultType.UrlChangeContainHref:
                string href = _elmTarget.GetAttribute("href");
                exe();
                ExecuteSleepAfterIfThereIs();
                string url = Modules.BrowserSupport.GetCurrentUrl();
                return(url.IndexOf(href) >= 0);

            default:
                throw new MyExceptions.LabelExecutionResultFailException("Expected result type " + _RType
                                                                         + " has not yet been handled in execute action");
            }
        }
예제 #3
0
        bool ExecuteLabelWithCheckOnAnotherElement(ExecuteLabelBehavior exe)
        {
            if (string.IsNullOrEmpty(_LabelData.ResultXPath))
            {
                throw new MyExceptions.LabelExecutionResultFailException("Result XPath cannot be null");
            }
            exe();
            ExecuteSleepAfterIfThereIs();
            IWebElement elmResult = Modules.BrowserSupport.FindElement(_LabelData.ResultXPath);

            if (elmResult == null)
            {
                if (_RType == LabelExpectedResultType.SomethingNotDisplayed)
                {
                    return(true);
                }
                else
                {
                    throw new MyExceptions.LabelExecutionResultFailException("Cannot get expected result element");
                }
            }
            switch (_RType)
            {
            case LabelExpectedResultType.SomethingDisabled:
                return(!elmResult.Enabled);

            case LabelExpectedResultType.SomethingDisplayed:
                return(elmResult.Displayed);

            case LabelExpectedResultType.SomethingEnabled:
                return(elmResult.Enabled);

            case LabelExpectedResultType.SomethingNotDisplayed:
                return(!elmResult.Displayed);

            default:
                throw new MyExceptions.LabelExecutionResultFailException("Expected result type " + _RType
                                                                         + " has not yet been handled in execute action");
            }
        }
예제 #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="label"></param>
        /// <param name="returnDatas">Should be set to action.ReturnDataCollection.
        /// Also can be null if label not require input data. Dictionary key is the label
        /// name that provide the input</param>
        public LabelObject(Models.ElementLabel label, Dictionary <string, object> inputDatas)
        {
            if (_rgParameter == null)
            {
                var pattern = "{.+?}";
                _rgParameter = new Regex(pattern);
            }
            _LabelData         = label;
            _inputDatas        = inputDatas;
            _maxLabelErrors    = int.Parse(System.Configuration.ConfigurationManager.AppSettings["maxlabelerrors"]);
            _SetCurrentElement = label.SetCurrentElement;
            _WType             = (WaitType)label.WaitType;
            _behavior          = (WebElementBehavior)label.ExpectedBehavior;
            switch (_behavior)
            {
            case WebElementBehavior.BrowseToUrlInCustomData:
                ExecuteLabel = BrowseToUrlInCustomData;
                break;

            case WebElementBehavior.GetIWebElements:
                ExecuteLabel = GetIWebelements;
                break;

            case WebElementBehavior.ClickByXPath:
                ExecuteLabel = ClickByXPath;
                break;

            case WebElementBehavior.ClickByXPathIfStillExists:
                ExecuteLabel = ClickByXPathIfStillExists;
                break;

            case WebElementBehavior.GetHtmlAgilityNodeCollection:
                ExecuteLabel = GetHtmlAgilityNodeCollection;
                break;

            case WebElementBehavior.GetInnerHtml:
                ExecuteLabel = GetInnerHtml;
                break;

            case WebElementBehavior.GetInnerText:
                ExecuteLabel = GetInnerText;
                break;

            case WebElementBehavior.GetIWebElement:
                ExecuteLabel = GetIWebelement;
                break;

            case WebElementBehavior.GetValueByXPathNavigator:
                ExecuteLabel = GetValueByXPathNavigator;
                break;

            case WebElementBehavior.LoopClickElements:
                ExecuteLabel = LoopClickElements;
                break;

            case WebElementBehavior.InputText:
                ExecuteLabel = InputText;
                break;

            case WebElementBehavior.ClickLinkButtonBySendKeyEnter:
                ExecuteLabel = ClickLinkButtonBySendKeyEnter;
                break;

            case WebElementBehavior.MouseOver:
                ExecuteLabel = MouseOver;
                break;

            case WebElementBehavior.Scroll:
                ExecuteLabel = ScrollToValueinInputData;
                break;

            case WebElementBehavior.SendEnterKey:
                ExecuteLabel = PressEnter;
                break;

            case WebElementBehavior.SelectOptionInDropDownList:
                ExecuteLabel = SelectOptionFromDropdown;
                break;

            case WebElementBehavior.WaitForSomethingHappen:
                ExecuteLabel = WaitForSomethingHappen;
                break;

            case WebElementBehavior.ReportNoDataFoundBaseOnHtml:
                ExecuteLabel = ReportNoDataFoundBaseOnHtml;
                break;

            case WebElementBehavior.RightClick:
                ExecuteLabel = RightClick;
                break;

            case WebElementBehavior.SaveDataToFile:
                ExecuteLabel = SaveDataToFile;
                break;
            }
            _RType = (LabelExpectedResultType)label.ExpectedResultType;
            switch (_RType)
            {
            case LabelExpectedResultType.SelfCssClassChange:
            case LabelExpectedResultType.SelfDisabled:
            case LabelExpectedResultType.SelfEnabled:
            case LabelExpectedResultType.SelfNotDisplayed:
            case LabelExpectedResultType.SelfTextChange:
            case LabelExpectedResultType.UrlChangeContainHref:
                ExecuteBehaviorWithCheck = ExecuteLabelWithCheckCurrentElement;
                break;

            case LabelExpectedResultType.SomethingDisabled:
            case LabelExpectedResultType.SomethingDisplayed:
            case LabelExpectedResultType.SomethingEnabled:
            case LabelExpectedResultType.SomethingNotDisplayed:
                ExecuteBehaviorWithCheck = ExecuteLabelWithCheckOnAnotherElement;
                break;

            default:
                ExecuteBehaviorWithCheck = ExecuteLabelWithSimpleCheck;
                break;
            }
        }