コード例 #1
0
 public IWebDriver DefaultContent()
 {
     logger_.Log(TraceLevel.Debug, Stage.General, StageType.Called);
     driver_.GetFrameChain().Clear();
     targetLocator_.DefaultContent();
     return(driver_);
 }
コード例 #2
0
 public IWebDriver DefaultContent()
 {
     logger_.Verbose("Switching to default content.");
     driver_.GetFrameChain().Clear();
     targetLocator_.DefaultContent();
     return(driver_);
 }
コード例 #3
0
 internal void HideCaret()
 {
     if (configuration_.HideCaret)
     {
         frameChain_ = driver_.GetFrameChain().Clone();
         logger_.Verbose("Hiding caret. driver_.FrameChain.Count: {0}", frameChain_.Count);
         activeElement_ = driver_.ExecuteScript(HIDE_CARET);
     }
 }
コード例 #4
0
        internal void TryHideScrollbars(bool stitchContent, IWebElement scrollRootElement)
        {
            if (configuration_.HideScrollbars)
            {
                scrollRootElement_ = scrollRootElement;
                frameChain_        = driver_.GetFrameChain().Clone();
                if (frameChain_.Count > 0)
                {
                    FrameChain fc = frameChain_.Clone();

                    // for the target frame, we only wish to remove scrollbars when in "fully" mode.
                    if (stitchContent)
                    {
                        Frame frame = fc.Peek();
                        frame.HideScrollbars(driver_);
                    }

                    RemoveScrollbarsFromParentFrames_(logger_, fc, driver_);
                }
                else
                {
                    logger_.Verbose("hiding scrollbars of element: {0}", scrollRootElement);
                    originalOverflow_ = EyesSeleniumUtils.SetOverflow("hidden", driver_, scrollRootElement);
                }

                logger_.Verbose("switching back to original frame");
                ((EyesWebDriverTargetLocator)driver_.SwitchTo()).Frames(frameChain_);

                logger_.Verbose("done hiding scrollbars.");
            }
            else
            {
                logger_.Verbose("no need to hide scrollbars.");
            }
        }
コード例 #5
0
        public EyesWebDriverScreenshot(Logger logger, EyesWebDriver driver, Bitmap image, ScreenshotTypeEnum?screenshotType, Point?frameLocationInScreenshot)
            : base(image)
        {
            ArgumentGuard.NotNull(logger, nameof(logger));
            ArgumentGuard.NotNull(driver, nameof(driver));
            logger_ = logger;
            driver_ = driver;

            logger_.Verbose("enter");

            UpdateScreenshotType_(screenshotType, image);

            IPositionProvider positionProvider;

            if (frameLocationInScreenshot == null || frameLocationInScreenshot.Value.IsEmpty)
            {
                IWebElement frameScrollRoot = driver.Eyes.GetCurrentFrameScrollRootElement();
                positionProvider = driver.Eyes.GetPositionProvider(logger, driver.Eyes.StitchMode,
                                                                   driver, frameScrollRoot);
                logger_.Verbose("position provider: using the current frame scroll root element's position provider: {0}", positionProvider);
            }
            else if (driver.Eyes.CurrentFramePositionProvider != null)
            {
                positionProvider = driver.Eyes.CurrentFramePositionProvider;
                logger_.Verbose("position provider: using CurrentFramePositionProvider: {0}", positionProvider);
            }
            else
            {
                positionProvider = driver.Eyes.PositionProvider;
                logger_.Verbose("position provider: using PositionProvider: {0}", positionProvider);
            }

            //IPositionProvider positionProvider = driver.Eyes.CurrentFramePositionProvider ?? driver.Eyes.PositionProvider;

            frameChain_ = driver_.GetFrameChain();
            logger_.Verbose("got frame chain. getting frame size...");
            Size frameSize = GetFrameSize_(positionProvider);

            UpdateCurrentScrollPosition_(positionProvider);
            UpdateFrameLocationInScreenshot_(frameLocationInScreenshot);
            Size frameContentSize = GetFrameContentSize();

            logger.Verbose("Calculating frame window...");
            frameWindow_ = new Region(frameLocationInScreenshot_, frameContentSize);
            Region imageSizeAsRegion = new Region(0, 0, image.Width, image.Height);

            logger.Verbose("frameWindow_: {0} ; imageSizeAsRegion: {1}", frameWindow_, imageSizeAsRegion);
            frameWindow_.Intersect(imageSizeAsRegion);
            logger.Verbose("updated frameWindow_: {0}", frameWindow_);

            if (frameWindow_.Width <= 0 || frameWindow_.Height <= 0)
            {
                throw new EyesException("Got empty frame window for screenshot!");
            }

            logger.Verbose("Done!");
        }
コード例 #6
0
        internal void PreparePage(ISeleniumCheckTarget seleniumCheckTarget, Configuration config, IWebElement userDefinedSRE)
        {
            frameStates_        = new List <FrameState>();
            originalFrameChain_ = driver_.GetFrameChain().Clone();

            if (seleniumCheckTarget.GetTargetElement() != null ||
                seleniumCheckTarget.GetTargetSelector() != null ||
                seleniumCheckTarget.GetFrameChain().Count > 0)
            {
                PrepareParentFrames_();
            }

            SaveCurrentFrameState_(frameStates_, driver_, userDefinedSRE);
            TryHideScrollbarsInFrame(config, driver_, userDefinedSRE);

            int switchedToFrameCount = SwitchToTargetFrame_(seleniumCheckTarget, config, frameStates_, userDefinedSRE);

            logger_.Verbose(nameof(switchedToFrameCount) + ": {0}", switchedToFrameCount);
        }
コード例 #7
0
        internal static FrameState GetCurrentFrameState(EyesWebDriver driver, IWebElement scrolledElement)
        {
            IJavaScriptExecutor jsExecutor = driver;
            Logger    logger    = driver.Eyes.Logger;
            UserAgent userAgent = UserAgent.ParseUserAgentString(driver.GetUserAgent());

            IPositionProvider cssPositionProvider    = SeleniumPositionProviderFactory.GetPositionProvider(logger, StitchModes.CSS, driver, scrolledElement, userAgent);
            IPositionProvider scrollPositionProvider = SeleniumPositionProviderFactory.GetPositionProvider(logger, StitchModes.Scroll, driver, scrolledElement, userAgent);
            string            overflow   = (string)jsExecutor.ExecuteScript("return arguments[0].style.overflow", scrolledElement);
            FrameChain        frameChain = driver.GetFrameChain().Clone();
            FrameState        frameState = new FrameState(driver, scrolledElement, cssPositionProvider, scrollPositionProvider, overflow, frameChain);

            return(frameState);
        }
コード例 #8
0
 /// <summary>
 /// Create a frame(!) window screenshot
 /// </summary>
 /// <param name="logger"></param>
 /// <param name="driver"></param>
 /// <param name="image"></param>
 /// <param name="entireFrameSize"></param>
 public EyesWebDriverScreenshot(Logger logger, EyesWebDriver driver, Bitmap image, Size entireFrameSize, Point frameLocationInScreenshot)
     : base(image)
 {
     ArgumentGuard.NotNull(logger, nameof(logger));
     ArgumentGuard.NotNull(driver, nameof(driver));
     ArgumentGuard.NotNull(entireFrameSize, nameof(entireFrameSize));
     logger_     = logger;
     driver_     = driver;
     frameChain_ = driver_.GetFrameChain();
     // The frame comprises the entire screenshot.
     screenshotType_             = ScreenshotTypeEnum.ENTIRE_FRAME;
     currentFrameScrollPosition_ = new Point(0, 0);
     frameLocationInScreenshot_  = frameLocationInScreenshot;
     frameWindow_ = new Region(new Point(0, 0), entireFrameSize);
 }