/// <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); }
private Point CalcFrameLocationInScreenshot_(FrameChain frameChain, ScreenshotTypeEnum screenshotType) { EyesWebDriverTargetLocator switchTo = (EyesWebDriverTargetLocator)driver_.SwitchTo(); FrameChain currentFC = frameChain.Clone(); switchTo.DefaultContent(); Point locationInScreenshot = Point.Empty; foreach (Frame frame in currentFC) { Rectangle rect = ((EyesRemoteWebElement)frame.Reference).GetClientBounds(); SizeAndBorders sizeAndBorders = ((EyesRemoteWebElement)frame.Reference).SizeAndBorders; RectangularMargins borders = sizeAndBorders.Borders; rect.Offset(borders.Left, borders.Top); locationInScreenshot.Offset(rect.Location); switchTo.Frame(frame.Reference); } return(locationInScreenshot); }
private void UpdateScreenshotType_(ScreenshotTypeEnum?screenshotType, Bitmap image) { if (screenshotType.HasValue) { logger_.Verbose("given {0} already have the value '{1}'. using it.", nameof(screenshotType), screenshotType.Value); screenshotType_ = screenshotType.Value; return; } Size viewportSize = driver_.GetDefaultContentViewportSize(); if (image.Width <= viewportSize.Width && image.Height <= viewportSize.Height) { screenshotType_ = ScreenshotTypeEnum.VIEWPORT; } else { screenshotType_ = ScreenshotTypeEnum.ENTIRE_FRAME; } logger_.Verbose("updated screenshot type to {0}", screenshotType_); }