Skip to content

Shooting strategies

Viacheslav Frolov edited this page Sep 30, 2015 · 11 revisions

#####Capturing shots from browsers with pixel ratio > 1 (Retina displays) Easy to capture shots from HD screens when device pixel ratio is greater that one.

new AShot()
  .shootingStrategy(ShootingStrategies.scaling(2))
  .takeScreenshot(webDriver);

#####Taking screenshots from a device like iPad with non Retina display

int scrollTimeout = 500;
int header = 98;
int footer = 0;

ShootingStrategy iPadShootingStrategy =
  ShootingStrategies.viewportNonRetina(scrollTimeout, header, footer);

new AShot()
  .shootingStrategy(iPadShootingStrategy)
  .takeScreenshot(webDriver);

#####Taking screenshots from a device like iPad with Retina display

int scrollTimeout = 500;
int header = 98;
int footer = 0;
float dpr = 2;

ShootingStrategy iPadShootingStrategy =
  ShootingStrategies.viewportRetina(scrollTimeout, header, footer, dpr);

new AShot()
  .shootingStrategy(iPadShootingStrategy)
  .takeScreenshot(webDriver);

#####Capturing shots when a browser has fixed or variable header height When using AShot to capture screen of a device (iOS, Android) or it's simulator, then resulting image is returned with browser's header. iOS Safari with browser header

For example to capture page on iOS 7 device we will use fixed header's height of 98px.

int header = 98;
int footer = 0;
int scrollTimeout = 500;

ShootingStrategy iPadShootingStrategy =
  ShootingStrategies.viewportNonRetina(scrollTimeout, header, footer);

new AShot()
  .shootingStrategy(iPadShootingStrategy)
  .takeScreenshot(webDriver);

In iOS 8 Safari introduces a feature when browser's header might be 65px or 41px (with address bar hidden). iOS Safari with browser header

For example to capture pages on iPad 2 we will use a strategy that can detect current height of browser's header.

int headerMin = 41;
int headerMax = 65;
int windowInnerHeightMin = 960;

VariableCutStrategy cutStrategy =
  new VariableCutStrategy(headerMin, headerMax, windowInnerHeightMin);

int scrollTimeout = 500;
ShootingStrategy iPadShootingStrategy =
        ShootingStrategies.viewportNonRetina(scrollTimeout, cutStrategy);

new AShot()
  .shootingStrategy(iPadShootingStrategy)
  .takeScreenshot(webDriver);
```![iOS Safari with browser header](https://raw.githubusercontent.com/frolovs/ashot/DPR_to_VerticalPastingShootingStrategy/doc/img/YandexTouchOniPhone_compiled.png)


It will result in following image

![iOS Safari with browser header](https://raw.githubusercontent.com/frolovs/ashot/DPR_to_VerticalPastingShootingStrategy/doc/img/YandexTouchOniPhone_compiled.png)
Clone this wiki locally