Exemplo n.º 1
0
        public virtual Point SetPosition(Point pos)
        {
            logger_.Verbose("setting position of {0} to {1}", ScrolledElement, pos);
            var position = executor_.ExecuteScript(string.Format(SetPositionCommandFormat, pos.X, pos.Y), ScrolledElement);

            return(EyesSeleniumUtils.ParseLocationString(position));
        }
        public IList <FloatingMatchSettings> GetRegions(EyesBase eyesBase, EyesScreenshot screenshot)
        {
            ReadOnlyCollection <IWebElement> elements = ((SeleniumEyes)eyesBase).GetDriver().FindElements(selector_);
            IList <FloatingMatchSettings>    retVal   = new List <FloatingMatchSettings>();

            foreach (IWebElement element in elements)
            {
                Rectangle r    = EyesSeleniumUtils.GetVisibleElementBounds(element);
                Point     pTag = screenshot.ConvertLocation(r.Location, CoordinatesTypeEnum.CONTEXT_RELATIVE, CoordinatesTypeEnum.SCREENSHOT_AS_IS);

                retVal.Add(
                    new FloatingMatchSettings()
                {
                    Left           = pTag.X,
                    Top            = pTag.Y,
                    Width          = r.Width,
                    Height         = r.Height,
                    MaxLeftOffset  = maxLeftOffset_,
                    MaxUpOffset    = maxUpOffset_,
                    MaxRightOffset = maxRightOffset_,
                    MaxDownOffset  = maxDownOffset_
                }
                    );
            }
            return(retVal);
        }
Exemplo n.º 3
0
        public override void RenderStatusById(TaskListener <List <RenderStatusResults> > taskListener,
                                              IList <string> testIds, IList <string> renderIds)
        {
            List <RenderStatusResults> results = new List <RenderStatusResults>();

            foreach (string renderId in renderIds)
            {
                List <VGRegion> selectorRegions = new List <VGRegion>();
                JToken          request         = renderRequestsById_[renderId];
                JToken          selectors       = request["selectorsToFindRegionsFor"];
                if (selectors != null && selectors is JArray selectorsArr)
                {
                    IWebDriver driver = driverProvider_.ProvideDriver();
                    foreach (JObject selectorToken in selectorsArr)
                    {
                        string      selector = selectorToken["selector"].Value <string>();
                        IWebElement elem     = driver.FindElement(By.XPath(selector));
                        Rectangle   r        = EyesSeleniumUtils.GetElementBounds(elem);
                        selectorRegions.Add(new VGRegion()
                        {
                            X = r.X, Y = r.Y, Width = r.Width, Height = r.Height
                        });
                    }
                }
                RenderStatusResults result = new RenderStatusResults()
                {
                    RenderId        = renderId,
                    Status          = RenderStatus.Rendered,
                    ImageLocation   = "http://image.some.url.com/" + renderId,
                    SelectorRegions = selectorRegions.ToArray()
                };
                results.Add(result);
            }
            taskListener.OnComplete(results);
        }
Exemplo n.º 4
0
        public IList <AccessibilityRegionByRectangle> GetRegions(IEyesBase eyesBase, IEyesScreenshot screenshot)
        {
            Rectangle r    = EyesSeleniumUtils.GetVisibleElementBounds(element_);
            Point     pTag = screenshot.ConvertLocation(r.Location, CoordinatesTypeEnum.CONTEXT_RELATIVE, CoordinatesTypeEnum.SCREENSHOT_AS_IS);

            return(new AccessibilityRegionByRectangle[] {
                new AccessibilityRegionByRectangle(new Rectangle(pTag, r.Size), regionType_)
            });
        }
 internal void SanitizeSettings(Logger logger, IWebDriver driver, bool isFully)
 {
     if (frameChain_.Count > 0 && targetElement_ == null && targetSelector_ == null && !isFully /* &&
                                                                                                 * ((Applitools.Fluent.ICheckSettingsInternal)this).GetTargetRegion() == null*/)
     {
         FrameLocator lastFrame = frameChain_[frameChain_.Count - 1];
         frameChain_.RemoveAt(frameChain_.Count - 1);
         targetElement_ = EyesSeleniumUtils.FindFrameByFrameCheckTarget(lastFrame, driver);
         logger.Log("Using Target.Frame() for the purpose of Target.Region()");
     }
 }
        public IList <IMutableRegion> GetRegions(IEyesBase eyesBase, IEyesScreenshot screenshot)
        {
            if (!(element_ is EyesRemoteWebElement eyesElement))
            {
                eyesElement = new EyesRemoteWebElement(eyesBase.Logger, ((SeleniumEyes)eyesBase).GetDriver(), element_);
            }
            Rectangle r    = EyesSeleniumUtils.GetVisibleElementBounds(eyesElement);
            Point     pTag = screenshot.ConvertLocation(r.Location, CoordinatesTypeEnum.CONTEXT_RELATIVE, CoordinatesTypeEnum.SCREENSHOT_AS_IS);

            return(new MutableRegion[] { new MutableRegion(pTag.X, pTag.Y, r.Width, r.Height) });
        }
        public IList <AccessibilityRegionByRectangle> GetRegions(EyesBase eyesBase, EyesScreenshot screenshot)
        {
            ReadOnlyCollection <IWebElement>       elements = ((SeleniumEyes)eyesBase).GetDriver().FindElements(selector_);
            IList <AccessibilityRegionByRectangle> retVal   = new List <AccessibilityRegionByRectangle>();

            foreach (IWebElement element in elements)
            {
                Rectangle r    = EyesSeleniumUtils.GetVisibleElementBounds(element);
                Point     pTag = screenshot.ConvertLocation(r.Location, CoordinatesTypeEnum.CONTEXT_RELATIVE, CoordinatesTypeEnum.SCREENSHOT_AS_IS);
                retVal.Add(new AccessibilityRegionByRectangle(new Rectangle(pTag, r.Size), regionType_));
            }
            return(retVal);
        }
        protected Size GetViewportSize()
        {
            EyesWebDriver driver = eyes_.GetDriver();

            if (cachedViewportSize_ == null || cachedUrl_ != driver.Url)
            {
                cachedUrl_          = driver.Url;
                cachedViewportSize_ = EyesSeleniumUtils.GetViewportSize(logger_, driver);
            }
            Size originalViewportSize = cachedViewportSize_.Value;

            return(originalViewportSize);
        }
Exemplo n.º 9
0
        public IList <IMutableRegion> GetRegions(EyesBase eyesBase, EyesScreenshot screenshot)
        {
            EyesWebDriver driver = ((SeleniumEyes)eyesBase).GetDriver();
            ReadOnlyCollection <IWebElement> elements       = driver.FindElements(selector_);
            IList <IMutableRegion>           mutableRegions = new List <IMutableRegion>();

            foreach (IWebElement element in elements)
            {
                Rectangle r    = EyesSeleniumUtils.GetVisibleElementBounds(element);
                Point     pTag = screenshot.ConvertLocation(r.Location, CoordinatesTypeEnum.CONTEXT_RELATIVE, CoordinatesTypeEnum.SCREENSHOT_AS_IS);
                mutableRegions.Add(new MutableRegion(pTag.X, pTag.Y, r.Width, r.Height));
            }
            return(mutableRegions);
        }
        internal void SanitizeSettings(Logger logger, IWebDriver driver, CheckState state)
        {
            bool isFully = state.StitchContent;

            if (frameChain_.Count > 0 && targetElement_ == null && targetSelector_ == null && !isFully /* &&
                                                                                                        * ((Applitools.Fluent.ICheckSettingsInternal)this).GetTargetRegion() == null*/)
            {
                FrameLocator lastFrame = frameChain_[frameChain_.Count - 1];
                frameChain_.RemoveAt(frameChain_.Count - 1);
                targetElement_        = EyesSeleniumUtils.FindFrameByFrameCheckTarget(lastFrame, driver);
                state.FrameToSwitchTo = targetElement_;
                logger.Log(TraceLevel.Notice, Stage.Check,
                           new { message = "Using Target.Frame() for the purpose of Target.Region()" });
            }
        }
Exemplo n.º 11
0
        internal VisualGridEyes(ISeleniumConfigurationProvider configurationProvider, VisualGridRunner visualGridRunner)
        {
            ArgumentGuard.NotNull(visualGridRunner, nameof(visualGridRunner));
            if (visualGridRunner.GetAllTestResultsAlreadyCalled)
            {
                throw new InvalidOperationException("Runner already returned its results");
            }
            configProvider_ = configurationProvider;
            Logger          = visualGridRunner.Logger;
            runner_         = visualGridRunner;

            IDebugResourceWriter drw = runner_.DebugResourceWriter;

            Ufg.IDebugResourceWriter ufgDrw = EyesSeleniumUtils.ConvertDebugResourceWriter(drw);
            debugResourceWriter_ = ufgDrw;
        }
Exemplo n.º 12
0
        public IList <FloatingMatchSettings> GetRegions(EyesBase eyesBase, EyesScreenshot screenshot)
        {
            Rectangle r    = EyesSeleniumUtils.GetVisibleElementBounds(element_);
            Point     pTag = screenshot.ConvertLocation(r.Location, CoordinatesTypeEnum.CONTEXT_RELATIVE, CoordinatesTypeEnum.SCREENSHOT_AS_IS);

            return(new FloatingMatchSettings[] {
                new FloatingMatchSettings()
                {
                    Left = pTag.X,
                    Top = pTag.Y,
                    Width = r.Width,
                    Height = r.Height,
                    MaxLeftOffset = maxLeftOffset_,
                    MaxUpOffset = maxUpOffset_,
                    MaxRightOffset = maxRightOffset_,
                    MaxDownOffset = maxDownOffset_
                }
            });
        }
        public void TestCheckDefaultElementBiggerBody()
        {
            IWebDriver driver = SeleniumUtils.CreateChromeDriver();

            try
            {
                driver.Url = "data:text/html,<html style=\"height:100vh\"><body><div style=\"height: 200vh\">Test</div></body></html>";
                IWebElement root = EyesSeleniumUtils.GetDefaultRootElement(driver);
                Assert.AreEqual("body", root.TagName);

                driver.Url = "data:text/html,<!doctype HTML><html style=\"height:100vh\"><body><div style=\"height: 200vh\">Test</div></body></html>";
                root       = EyesSeleniumUtils.GetDefaultRootElement(driver);
                Assert.AreEqual("html", root.TagName);
            }
            finally
            {
                driver.Quit();
            }
        }
        public override Bitmap GetImage()
        {
            logger_.Verbose("Getting current position...");
            Point  loc;
            double scaleRatio = eyes_.DevicePixelRatio;

            FrameChain        currentFrameChain = eyes_.GetDriver().GetFrameChain();
            IPositionProvider positionProvider  = null;

            if (currentFrameChain.Count == 0)
            {
                IWebElement scrollRootElement = eyes_.GetCurrentFrameScrollRootElement();
                positionProvider = eyes_.GetPositionProvider(logger_, StitchModes.Scroll,
                                                             jsExecutor_, scrollRootElement, userAgent_);
                loc = positionProvider.GetCurrentPosition();
            }
            else
            {
                loc = currentFrameChain.GetDefaultContentScrollPosition();
            }
            Point scaledLoc = new Point((int)Math.Round(loc.X * scaleRatio), (int)Math.Round(loc.Y * scaleRatio));

            Bitmap        image  = base.GetImage();
            EyesWebDriver driver = eyes_.GetDriver();
            RectangleSize originalViewportSize = EyesSeleniumUtils.GetViewportSize(logger_, driver);
            RectangleSize viewportSize         = originalViewportSize.Scale(scaleRatio);

            if (image.Height > viewportSize.Height || image.Width > viewportSize.Width)
            {
                //Damn IE driver returns full page screenshot even when not asked to!
                logger_.Verbose("seems IE returned full page screenshot rather than only the viewport.");
                eyes_.DebugScreenshotProvider.Save(image, "IE");
                if (!eyes_.IsCutProviderExplicitlySet)
                {
                    Bitmap croppedImage = BasicImageUtils.Crop(image, new Rectangle(scaledLoc, viewportSize));
                    image.Dispose();
                    image = croppedImage;
                }
            }

            positionProvider?.SetPosition(loc);
            return(image);
        }
Exemplo n.º 15
0
        internal string GetDomCaptureAndPollingScriptResult_(string[] testIds)
        {
            string captureScript = userAgent_.IsInternetExplorer ? CAPTURE_DOM_FOR_IE : CAPTURE_DOM;
            string pollingScript = userAgent_.IsInternetExplorer ? POLL_RESULT_FOR_IE : POLL_RESULT;

            int chunkByteLength = userAgent_.IsiOS ? 10 * MB : 256 * MB;

            object arguments = new { chunkByteLength };

            string result = null;

            try
            {
                result = EyesSeleniumUtils.RunDomScript(logger_, webDriver_, testIds, captureScript, arguments, arguments, pollingScript);
            }
            catch (Exception e)
            {
                CommonUtils.LogExceptionStackTrace(logger_, Stage.Check, StageType.DomScript, e, testIds);
            }
            return(result);
        }
Exemplo n.º 16
0
        private void Init(string suiteName)
        {
            TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
            int concurrentOpenSessions = ((IRunnerOptionsInternal)runnerOptions_).GetConcurrency();

            suiteName_ = suiteName;
            if (suiteName_ == null)
            {
                StackFrame frame = new StackFrame(2);
                suiteName_ = frame.GetMethod().DeclaringType.Name;
            }

            IDictionary <string, RGridResource>     resourcesCacheMap     = ((IVisualGridRunner)this).ResourcesCacheMap;
            IDictionary <string, HashSet <string> > cachedResourceMapping = ((IVisualGridRunner)this).CachedResourceMapping;

            Ufg.IDebugResourceWriter drw = EyesSeleniumUtils.ConvertDebugResourceWriter(DebugResourceWriter);

            eyesServiceRunner_ = new EyesServiceRunner(Logger, ServerConnector, allEyes_, concurrentOpenSessions,
                                                       drw, resourcesCacheMap, this, suiteName_);
            eyesServiceRunner_.Start();
        }
Exemplo n.º 17
0
        internal static Point GetCurrentPosition(IEyesJsExecutor executor, IWebElement scrollRootElement)
        {
            var position = executor.ExecuteScript("return arguments[0].scrollLeft+';'+arguments[0].scrollTop;", scrollRootElement);

            return(EyesSeleniumUtils.ParseLocationString(position));
        }