예제 #1
0
        private static void WriteResult(ResultCheck resultCheck
                                        , string resultFileName
                                        , string comparisonResult
                                        , string executionValue)
        {
            var context   = new ContextForAutoTest();
            var resultStr = new AutoTestResult();

            resultStr.ExpectedContent    = resultCheck.Description;
            resultStr.ConfirmationTarget = SetConfirmationTaget(resultCheck);
            resultStr.ExpectedValue      = resultCheck.ExpectedValue;
            resultStr.ExecutionValue     = executionValue;
            resultStr.ComparisonResult   = comparisonResult;
            WriteResult(resultString: resultStr, ResultFileName: resultFileName);
            WriteLog(
                logFileName: Parameters.ExtendedAutoTestSettings.LogFileName,
                logMessage:
                Displays.AutoTestResultMessage(
                    context: context,
                    data: new string[]
            {
                resultStr.ComparisonResult,
                resultStr.ExpectedContent,
                resultStr.ConfirmationTarget,
                resultStr.ExpectedValue,
                resultStr.ExecutionValue
            }),
                consoleColor: SelectConsoleColor(resultStr.ComparisonResult)
                );
        }
예제 #2
0
        private static string GetExecutionValue(IWebDriver driver
                                                , ResultCheck resultCheck)
        {
            var executionValue = (string)null;

            if (!resultCheck.ItemId.IsNullOrEmpty())
            {
                IJavaScriptExecutor jsDriver = driver as IJavaScriptExecutor;
                if (!Exists(driver, resultCheck.ItemId))
                {
                    return(executionValue);
                }
                if (resultCheck.ItemId.StartsWith("Check"))
                {
                    executionValue = jsDriver.ExecuteScript($"return $p.getControl('{resultCheck.ItemId}').prop('checked');")
                                     .ToString();
                }
                else
                {
                    executionValue = jsDriver.ExecuteScript($"return $p.getControl('{resultCheck.ItemId}').val();")
                                     .ToString();
                    if (executionValue.IsNullOrEmpty() &&
                        !jsDriver.ExecuteScript($"return $p.getControl('{resultCheck.ItemId}').prop('tagName');")
                        .ToString()
                        .Equals("SELECT"))
                    {
                        executionValue = jsDriver.ExecuteScript($"return $p.getControl('{resultCheck.ItemId}').text();")
                                         .ToString();
                    }
                }
            }
            else
            {
                if (driver.FindElement(SelectItem(resultCheck)).TagName.Equals("select"))
                {
                    var selectElement = new SelectElement(driver.FindElement(SelectItem(resultCheck)));

                    if (resultCheck.CheckType.Equals(CheckTypes.SelectOptions))
                    {
                        executionValue = string.Join(",",
                                                     selectElement.Options
                                                     .Where(o => !o.Text.Equals(" "))
                                                     .Select(o => o.Text).ToList());
                    }
                    else
                    {
                        executionValue = selectElement.SelectedOption.Text;
                    }
                }
                else
                {
                    executionValue = driver.FindElement(SelectItem(resultCheck)).Text;
                    if (executionValue.IsNullOrEmpty())
                    {
                        executionValue = driver.FindElement(SelectItem(resultCheck)).GetAttribute("value");
                    }
                }
            }
            return(executionValue);
        }
예제 #3
0
        private static string GetLabelText(IWebDriver driver, ResultCheck resultCheck)
        {
            IJavaScriptExecutor jsDriver = driver as IJavaScriptExecutor;

            return(jsDriver.ExecuteScript(
                       $"return $p.getField('{resultCheck.ItemId}').find('label').text();").ToString());
        }
예제 #4
0
        /// <summary>
        /// check_device
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            richTextBox1.Text = string.Empty;
            string result = SSTest.Comm.Query.check_device("1", "fackbook", "1");

            ResultCheck resultmodel = CommMeth.JsonDeserialize <ResultCheck>(result);

            richTextBox1.Text = result;
        }
예제 #5
0
        private static string ReadOnly(IWebDriver driver, ResultCheck resultCheck)
        {
            IJavaScriptExecutor jsDriver = driver as IJavaScriptExecutor;

            return(jsDriver.ExecuteScript($@"
                if ($p.getControl('{resultCheck.ItemId}').attr('data-readonly')) {{
                    return 'ReadOnlyTrue';
                }} else {{
                    return 'ReadOnlyFalse';
                }}").ToString());
        }
예제 #6
0
        private static bool CanReadRecordOnGrid(
            IWebDriver driver,
            ResultCheck resultCheck)
        {
            IJavaScriptExecutor jsDriver = driver as IJavaScriptExecutor;

            jsDriver.ExecuteScript($"$('#ViewFilters_Reset').click()");
            jsDriver.ExecuteScript($"$p.data.MainForm.ViewFilters__ResultId='{resultCheck.ItemId}'");
            jsDriver.ExecuteScript($"$p.data.MainForm.ViewFilters__IssueId='{resultCheck.ItemId}'");
            jsDriver.ExecuteScript($"$p.send($('#Grid'))");
            return(driver.FindElements(By.CssSelector($"[data-id=\"{resultCheck.ItemId}\"]")).Count == 1);
        }
예제 #7
0
        private static bool SelectOptions(IWebDriver driver, ResultCheck resultCheck, string executionValue)
        {
            var executionValueList = executionValue
                                     .Split(',')
                                     .ToList();
            var expectedList = resultCheck.ExpectedValue
                               .Split(',')
                               .ToList();

            executionValueList.Sort();
            expectedList.Sort();
            return(expectedList.SequenceEqual(executionValueList));
        }
예제 #8
0
        private static bool CanCrossSearchRecord(
            IWebDriver driver,
            ResultCheck resultCheck)
        {
            IJavaScriptExecutor jsDriver = driver as IJavaScriptExecutor;

            jsDriver.ExecuteScript($"$p.set($('#Search'),'{resultCheck.SearchString}')");
            IWebElement element = driver.FindElement(By.Id("Search"));

            element.SendKeys(Keys.Return);
            Thread.Sleep(resultCheck.WaitTime);
            return(driver.FindElements(By.CssSelector($"[href=\"/items/{resultCheck.ItemId}/edit?back=1\"]")).Count == 1);
        }
예제 #9
0
        private static bool CanReadRecordOnEditor(
            IWebDriver driver,
            ResultCheck resultCheck)
        {
            var url = string.Empty;

            if (!resultCheck.ItemId.IsNullOrEmpty())
            {
                var recordId = resultCheck.ItemId;
                url = $"{Parameters.ExtendedAutoTestSettings.Url}items/{recordId}";
            }
            driver.Navigate().GoToUrl(url);
            Thread.Sleep(resultCheck.WaitTime);
            return(driver.FindElements(By.Id("HeaderTitle")).Count() == 1);
        }
예제 #10
0
 public static void CheckResult(
     IWebDriver driver,
     ResultCheck resultCheck,
     string resultFileName)
 {
     if (!resultCheck.ExpectedValue.IsNullOrEmpty())
     {
         resultCheck.ExecutionValue = GetExecutionValue(driver, resultCheck);
     }
     WriteResult(
         resultCheck,
         resultFileName,
         ComparisonValue(driver, resultCheck),
         resultCheck.ExecutionValue);
 }
예제 #11
0
 private static string SetConfirmationTaget(ResultCheck resultCheck)
 {
     if (!resultCheck.ItemId.IsNullOrEmpty())
     {
         return(resultCheck.ItemId);
     }
     else if (!resultCheck.ElementId.IsNullOrEmpty())
     {
         return(resultCheck.ElementId);
     }
     else if (!resultCheck.ElementLinkText.IsNullOrEmpty())
     {
         return(resultCheck.ElementLinkText);
     }
     else
     {
         return(resultCheck.ElementXpath);
     }
 }
예제 #12
0
 private static By SelectItem(ResultCheck resultCheck)
 {
     if (!resultCheck.ElementId.IsNullOrEmpty())
     {
         return(By.Id(resultCheck.ElementId));
     }
     else if (!resultCheck.ElementXpath.IsNullOrEmpty())
     {
         return(By.XPath(resultCheck.ElementXpath));
     }
     else if (!resultCheck.ElementCss.IsNullOrEmpty())
     {
         return(By.CssSelector(resultCheck.ElementCss));
     }
     else
     {
         return(By.PartialLinkText(resultCheck.ElementLinkText));
     }
 }
예제 #13
0
        private static bool DataRequired(IWebDriver driver, ResultCheck resultCheck)
        {
            IJavaScriptExecutor jsDriver = driver as IJavaScriptExecutor;

            if (!resultCheck.ItemId.IsNullOrEmpty())
            {
                return(jsDriver.ExecuteScript($@"
                if ($p.getControl('{resultCheck.ItemId}')) {{
                    return $p.getControl('{resultCheck.ItemId}').attr('data-validate-required');
                }} else {{
                    return false;
                }}").ToBool());
            }
            else
            {
                return(jsDriver.ExecuteScript($@"
                if ($('{resultCheck.ElementCss}')) {{
                    return $('{resultCheck.ElementCss}').attr('data-validate-required');
                }} else {{
                    return false;
                }}").ToBool());
            }
        }
예제 #14
0
        private static bool HasClass(IWebDriver driver, ResultCheck resultCheck)
        {
            IJavaScriptExecutor jsDriver = driver as IJavaScriptExecutor;

            if (!resultCheck.ItemId.IsNullOrEmpty())
            {
                return(jsDriver.ExecuteScript($@"
                if ($p.getControl('{resultCheck.ItemId}')) {{
                    return $p.getControl('{resultCheck.ItemId}').hasClass('{resultCheck.ExpectedValue}');
                }} else {{
                    return false;
                }}").ToBool());
            }
            else
            {
                return(jsDriver.ExecuteScript($@"
                if ($('{resultCheck.ElementCss}')) {{
                    return $('{resultCheck.ElementCss}').hasClass('{resultCheck.ExpectedValue}');
                }} else {{
                    return false;
                }}").ToBool());
            }
        }
예제 #15
0
        private static string ComparisonValue(
            IWebDriver driver,
            ResultCheck resultCheck)
        {
            var context = new ContextForAutoTest();

            if (resultCheck.CheckType.Equals(CheckTypes.Regex))
            {
                if (Regex.IsMatch(resultCheck.ExecutionValue, resultCheck.ExpectedValue))

                {
                    return(Displays.AutoTestResultOk(context: context));
                }
                else
                {
                    return(Displays.AutoTestResultNg(context: context));
                }
            }
            else if (resultCheck.CheckType.Equals(CheckTypes.Existance))
            {
                resultCheck.ExecutionValue = resultCheck.ExecutionValue == null ? "ExistanceFalse" : "ExistanceTrue";
                if (resultCheck.ExecutionValue.Equals(resultCheck.ExpectedValue))
                {
                    return(Displays.AutoTestResultOk(context: context));
                }
                else
                {
                    return(Displays.AutoTestResultNg(context: context));
                }
            }
            else if (resultCheck.CheckType.Equals(CheckTypes.HasClass))
            {
                if (HasClass(driver, resultCheck))
                {
                    return(Displays.AutoTestResultOk(context: context));
                }
                else
                {
                    return(Displays.AutoTestResultNg(context: context));
                }
            }
            else if (resultCheck.CheckType.Equals(CheckTypes.HasNotClass))
            {
                if (!HasClass(driver, resultCheck))
                {
                    return(Displays.AutoTestResultOk(context: context));
                }
                else
                {
                    return(Displays.AutoTestResultNg(context: context));
                }
            }
            else if (resultCheck.CheckType.Equals(CheckTypes.ReadOnly))
            {
                resultCheck.ExecutionValue = ReadOnly(driver, resultCheck);
                if (resultCheck.ExecutionValue.Equals(resultCheck.ExpectedValue))
                {
                    return(Displays.AutoTestResultOk(context: context));
                }
                else
                {
                    return(Displays.AutoTestResultNg(context: context));
                }
            }
            else if (resultCheck.CheckType.Equals(CheckTypes.DataRequiredTrue))
            {
                if (DataRequired(driver, resultCheck))
                {
                    return(Displays.AutoTestResultOk(context: context));
                }
                else
                {
                    return(Displays.AutoTestResultNg(context: context));
                }
            }
            else if (resultCheck.CheckType.Equals(CheckTypes.DataRequiredFalse))
            {
                if (!DataRequired(driver, resultCheck))
                {
                    return(Displays.AutoTestResultOk(context: context));
                }
                else
                {
                    return(Displays.AutoTestResultNg(context: context));
                }
            }
            else if (resultCheck.CheckType.Equals(CheckTypes.CanReadRecordOnGrid))
            {
                if (CanReadRecordOnGrid(driver, resultCheck))
                {
                    return(Displays.AutoTestResultOk(context: context));
                }
                else
                {
                    return(Displays.AutoTestResultNg(context: context));
                }
            }
            else if (resultCheck.CheckType.Equals(CheckTypes.CanNotReadRecordOnGrid))
            {
                if (!CanReadRecordOnGrid(driver, resultCheck))
                {
                    return(Displays.AutoTestResultOk(context: context));
                }
                else
                {
                    return(Displays.AutoTestResultNg(context: context));
                }
            }
            else if (resultCheck.CheckType.Equals(CheckTypes.CanUpdateRecordOnEditor))
            {
                if (CanReadRecordOnEditor(driver, resultCheck) && CanUpdateRecordOnEditor(driver))
                {
                    return(Displays.AutoTestResultOk(context: context));
                }
                else
                {
                    return(Displays.AutoTestResultNg(context: context));
                }
            }
            else if (resultCheck.CheckType.Equals(CheckTypes.CanReadRecordOnEditor))
            {
                if (CanReadRecordOnEditor(driver, resultCheck) && !CanUpdateRecordOnEditor(driver))
                {
                    return(Displays.AutoTestResultOk(context: context));
                }
                else
                {
                    return(Displays.AutoTestResultNg(context: context));
                }
            }
            else if (resultCheck.CheckType.Equals(CheckTypes.CanNotReadRecordOnEditor))
            {
                if (!CanReadRecordOnEditor(driver, resultCheck))
                {
                    return(Displays.AutoTestResultOk(context: context));
                }
                else
                {
                    return(Displays.AutoTestResultNg(context: context));
                }
            }
            else if (resultCheck.CheckType.Equals(CheckTypes.CanCrossSearchRecord))
            {
                if (CanCrossSearchRecord(driver, resultCheck))
                {
                    return(Displays.AutoTestResultOk(context: context));
                }
                else
                {
                    return(Displays.AutoTestResultNg(context: context));
                }
            }
            else if (resultCheck.CheckType.Equals(CheckTypes.CanNotCrossSearchRecord))
            {
                if (!CanCrossSearchRecord(driver, resultCheck))
                {
                    return(Displays.AutoTestResultOk(context: context));
                }
                else
                {
                    return(Displays.AutoTestResultNg(context: context));
                }
            }
            else if (resultCheck.CheckType.Equals(CheckTypes.SelectOptions))
            {
                if (SelectOptions(driver, resultCheck, resultCheck.ExecutionValue))
                {
                    return(Displays.AutoTestResultOk(context: context));
                }
                else
                {
                    return(Displays.AutoTestResultNg(context: context));
                }
            }
            else if (resultCheck.CheckType.Equals(CheckTypes.Label))
            {
                resultCheck.ExecutionValue = GetLabelText(driver, resultCheck);
                if (resultCheck.ExecutionValue.Equals(resultCheck.ExpectedValue))
                {
                    return(Displays.AutoTestResultOk(context: context));
                }
                else
                {
                    return(Displays.AutoTestResultNg(context: context));
                }
            }
            else
            {
                if (resultCheck.ExecutionValue == resultCheck.ExpectedValue)

                {
                    return(Displays.AutoTestResultOk(context: context));
                }
                else
                {
                    return(Displays.AutoTestResultNg(context: context));
                }
            }
        }