示例#1
0
        private void RunTest(MyNode n, DeviceConfig deviceConfig)
        {
            IWebElement element = null;

            #region update screenshot
            MyNode.TpGUIScreenshot guiScreenshot = new MyNode.TpGUIScreenshot();

            Screenshot   screenshot = ((ITakesScreenshot)_driver).GetScreenshot();
            MemoryStream ms         = new MemoryStream(screenshot.AsByteArray);
            guiScreenshot.Screenshot = Image.FromStream(ms);
            guiScreenshot.Width      = _driver.Manage().Window.Size.Width;
            guiScreenshot.Height     = _driver.Manage().Window.Size.Height;

            n.GUIScreenshot = guiScreenshot;
            #endregion

            DateTime timeStart = DateTime.Now;

            if (n.WaitElementBySecond > 0)
            {
                System.Threading.Thread.Sleep(n.WaitElementBySecond * 1000);
            }

            List <XPathSelector> xpaths = new List <XPathSelector>();

            xpaths = MyNode.ExtractSelectors(n);


            xpaths = MyNode.OrderBySelectorInOrder(xpaths);

            foreach (XPathSelector selector in xpaths)
            {
                //if (selector.Type != XPathSelector.XPathType.AncestorIndex)
                //    continue;

                try
                {
                    if (n.Platform == "Android" && selector.XPathForAndroid != "")
                    {
                        element = _driver.FindElementByXPath(selector.XPathForAndroid);
                    }
                    else if (n.Platform == "iOS" && selector.XPathForIOS != "")
                    {
                        element = _driver.FindElementByXPath(selector.XPathForIOS);
                    }
                }
                catch
                {
                    continue;
                }

                if (element != null)
                {
                    break;
                }
            }


            if (element != null)
            {
                try
                {
                    if (n.SendClick)
                    {
                        element.Click();
                    }
                    else if (n.SendKeys)
                    {
                        element.Click();
                        element.Clear();
                        element.SendKeys(n.SendKeysText);

                        if (n.Platform == "Android")
                        {
                            _driver.HideKeyboard();
                        }
                        else if (n.Platform == "iOS")
                        {
                            _driver.FindElementByXPath("//*[@name='Hide keyboard']").Click();
                        }
                    }
                }
                catch (Exception ex)
                {
                    RegisterLog("[Run Test] Error - " + ex.Message);
                }

                TimeSpan ts = DateTime.Now.Subtract(timeStart);


                #region Extract status of executation

                //Screenshot screenshotExec = ((ITakesScreenshot)_driver).GetScreenshot();
                //MemoryStream msExec = new MemoryStream(screenshotExec.AsByteArray);

                //MyNode.TpGUIScreenshot guiScreenshotExec = new MyNode.TpGUIScreenshot()
                //{
                //    Screenshot = Image.FromStream(msExec),
                //    Width = _driver.Manage().Window.Size.Width,
                //    Height = _driver.Manage().Window.Size.Height
                //};

                //XDocument xml = XDocument.Parse(_driver.PageSource);

                //n.ExecutationState = new MyNode.TpExecutationState()
                //{
                //    Executed = true,
                //    GUIScreenshot = guiScreenshotExec,
                //    Xml = xml,
                //    Runtime = ts.TotalSeconds
                //};

                #region Reprocess RunTime total for all nodes/events

                double runTimeTotal = 0;
                foreach (MyNode nAux in deviceConfig.Events)
                {
                    runTimeTotal += nAux.ExecutationState.Runtime;
                }

                //update RuntimePercent
                foreach (MyNode nAux in deviceConfig.Events)
                {
                    nAux.ExecutationState.RuntimePercent = (100 * nAux.ExecutationState.Runtime) / runTimeTotal;
                }


                #endregion


                #endregion
            }
        }