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."); }
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."); }