Ejemplo n.º 1
0
        public override object DoRun()
        {
            var lookupResult = new DirectLookupStrategy(Selenium, TagNames, SubjectName, Locale, Direction, Order, false, ExactMatch).LookUp();

            if (Interpreter?.IsAnalysis == true)
            {
                Console.Out.WriteColoredLine(ConsoleColor.Magenta, $"Main Result: \n\t{lookupResult.MainResult}\nAll results:\n\t{string.Join("\n\t", lookupResult.AllValidResults)}");
            }

            var visibleArea = Selenium.GetBrowserBox();
            var visibles    = lookupResult.AllValidResults.Where(x => IsInsideBoundingBox(x, visibleArea)).ToList();

            if (Interpreter?.IsDebugMode == true && lookupResult.AllValidResults.Any())
            {
                var passedExpectations = Expect.ToString().ToLower().Equals(true.ToString().ToLower());

                BrowserOverlay
                .HighlightElements((Order + 1).ToString(), (passedExpectations ? Color.FromArgb(0, 255, 0) : Color.Red), lookupResult.MainResult)
                .ShowFor(750, "Highlighted element will be Clicked");
            }

            return(visibles.Count > Order);


            //for (int index = 0; index < lookupResult.AllValidResults.Count(); index++)
            //{
            //    var e = lookupResult.AllValidResults.ElementAt(index);

            //    var isInsideBoundingBox = IsInsideBoundingBox(e, Selenium.GetBrowserBox());

            //    if (isInsideBoundingBox)
            //    {
            //        if (Interpreter?.IsDebugMode == true)
            //        {
            //            Highlighter.HighlightElements(1250, Selenium, lookupResult.AllValidResults,
            //            (Expect.ToString().ToLower().Equals(true.ToString().ToLower())
            //                ? Color.GreenYellow
            //                : Color.Red), Color.Yellow, index, Color.Black);
            //        }
            //        return true;
            //    }
            //}


            //return false;

            //throw new NotImplementedException($"Checking visibility of nth ({Order}) elements is not implemented.");
        }
Ejemplo n.º 2
0
        public override object DoRun()
        {
            var searchStrategy = new LocationHeuristictSearchStrategy(this.Selenium);
            var lookupResult   = searchStrategy.DirectLookup(TagNames, SubjectName, Locale, Direction, Order, false);

            if (Interpreter?.IsAnalysis == true)
            {
                Console.Out.WriteColoredLine(ConsoleColor.Magenta, $"Main Result: \n\t{lookupResult.MainResult}\nAll results:\n\t{string.Join("\n\t", lookupResult.AllValidResults)}");
            }

            var chromeHandle = Selenium.BrowserHandle;
            var browserBox   = new UserBindings.RECT();

            UserBindings.GetWindowRect(chromeHandle, ref browserBox);

            var e = lookupResult.AllValidResults.ElementAt(Order);

            Selenium.PutElementOnScreen(e.WebElement);

            var refreshedPosition = e.WebElement.AsBufferedElement().Rectangle;

            var centerX = refreshedPosition.X + refreshedPosition.Width / 2;
            var centerY = refreshedPosition.Y + refreshedPosition.Height / 2;

            var p = new Point(centerX, centerY);

            Selenium.ConvertFromPageToWindow(ref p);

            if (p.X < 0 || p.X > browserBox.Right || p.Y < 0 || p.Y > browserBox.Bottom)
            {
                throw new NotFoundException("Element not found");
            }
            else
            {
                if (Interpreter?.IsDebugMode == true)
                {
                    BrowserOverlay
                    .HighlightElements((Order + 1).ToString(), (Expect.ToString().ToLower().Equals(true.ToString().ToLower()) ? Color.GreenYellow : Color.Red), lookupResult.MainResult)
                    .ShowFor(750, "Highlighted element will be Clicked");
                }
                return(lookupResult.AllValidResults.ElementAt(Order).WebElement.Selected);
            }

            throw new NotFoundException("Element not found");

            throw new NotImplementedException($"Checking visibility of nth ({Order}) elements is not implemented.");
        }