@@ -154,14 +154,13 @@ public static PageSnapshot shootPage(WebDriver driver, Capture capture,
154
154
pageScreenshot .setImage (browser .takeFullPageScreenshot ());
155
155
break ;
156
156
case VERTICAL_SCROLL :
157
- pageScreenshot .setImage (browser .takeFullPageVerticalScreenshot ( false , null ));
157
+ pageScreenshot .setImage (browser .takeFullPageVerticalScreenshotScroll ( null ));
158
158
break ;
159
159
case HORIZONTAL_SCROLL :
160
- _SCROLL :
161
- pageScreenshot .setImage (browser .takeFullPageHorizontalScreenshot (false , null ));
160
+ pageScreenshot .setImage (browser .takeFullPageHorizontalScreenshotScroll (null ));
162
161
break ;
163
162
case FULL_SCROLL :
164
- pageScreenshot .setImage (browser .takeFullPageScreenshotScroll (false , null ));
163
+ pageScreenshot .setImage (browser .takeFullPageScreenshotScroll (null ));
165
164
break ;
166
165
}
167
166
return pageScreenshot ;
@@ -197,7 +196,8 @@ public static ElementSnapshot shootElement(WebDriver driver, WebElement element)
197
196
* @return ElementSnapshot instance
198
197
*/
199
198
public static ElementSnapshot shootElement (WebDriver driver ,
200
- WebElement element , Capture capture ) {
199
+ WebElement element ,
200
+ CaptureElement capture ) {
201
201
return shootElement (driver , element , capture , true );
202
202
}
203
203
@@ -214,7 +214,7 @@ public static ElementSnapshot shootElement(WebDriver driver, WebElement element,
214
214
Browser browser = new Browser (driver , useDevicePixelRatio );
215
215
ElementSnapshot elementSnapshot = new ElementSnapshot (driver , browser .getDevicePixelRatio ());
216
216
browser .scrollToElement (element );
217
- elementSnapshot .setImage (browser .takeScreenshot (), browser .getBoundingClientRect (element ));
217
+ elementSnapshot .setImage (browser .takeScreenshot (), browser .getCoordinates (element ));
218
218
return elementSnapshot ;
219
219
}
220
220
@@ -230,23 +230,23 @@ public static ElementSnapshot shootElement(WebDriver driver, WebElement element,
230
230
*/
231
231
public static ElementSnapshot shootElement (WebDriver driver ,
232
232
WebElement element ,
233
- Capture capture ,
233
+ CaptureElement capture ,
234
234
boolean useDevicePixelRatio ) {
235
235
Browser browser = new Browser (driver , useDevicePixelRatio );
236
236
ElementSnapshot elementSnapshot = new ElementSnapshot (driver , browser .getDevicePixelRatio ());
237
237
browser .scrollToElement (element );
238
238
switch (capture ) {
239
- case VIEWPORT :
240
- elementSnapshot .setImage (browser .takeElementViewportScreenshot (element ));
241
- break ;
242
239
case VERTICAL_SCROLL :
243
- elementSnapshot .setImage (browser .takeFullElementVerticalScreenshot (element ));
240
+ elementSnapshot .setImage (browser .takeFullElementVerticalScreenshotScroll (element ));
244
241
break ;
245
242
case HORIZONTAL_SCROLL :
246
- elementSnapshot .setImage (browser .takeFullElementHorizontalScreenshot (element ));
243
+ elementSnapshot .setImage (browser .takeFullElementHorizontalScreenshotScroll (element ));
244
+ break ;
245
+ case FULL_SCROLL :
246
+ elementSnapshot .setImage (browser .takeFullElementScreenshotScroll (element ));
247
247
break ;
248
248
default :
249
- elementSnapshot .setImage (browser .takeFullElementScreenshot (element ));
249
+ elementSnapshot .setImage (browser .takeElementViewportScreenshot (element ));
250
250
}
251
251
return elementSnapshot ;
252
252
}
@@ -263,7 +263,7 @@ public static ElementSnapshot shootElementVerticallyCentered(WebDriver driver, W
263
263
Browser browser = new Browser (driver , useDevicePixelRatio );
264
264
ElementSnapshot elementSnapshot = new ElementSnapshot (driver , browser .getDevicePixelRatio ());
265
265
browser .scrollToElementVerticalCentered (element );
266
- elementSnapshot .setImage (browser .takeScreenshot (), browser .getBoundingClientRect (element ));
266
+ elementSnapshot .setImage (browser .takeScreenshot (), browser .getCoordinates (element ));
267
267
return elementSnapshot ;
268
268
}
269
269
@@ -278,7 +278,7 @@ public static ElementSnapshot shootElementVerticallyCentered(WebDriver driver, W
278
278
* @return PageSnapshot instance
279
279
*/
280
280
public static PageSnapshot shootFrame (WebDriver driver , String frameId ,
281
- Capture capture ,
281
+ CaptureElement capture ,
282
282
boolean useDevicePixelRatio ) {
283
283
WebElement frame = driver .findElement (By .id (frameId ));
284
284
return shootFrame (driver , frame , capture , 0 ,
@@ -296,7 +296,8 @@ public static PageSnapshot shootFrame(WebDriver driver, String frameId,
296
296
* @return PageSnapshot instance
297
297
*/
298
298
public static PageSnapshot shootFrame (WebDriver driver , WebElement frame ,
299
- Capture capture , boolean useDevicePixelRatio ) {
299
+ CaptureElement capture ,
300
+ boolean useDevicePixelRatio ) {
300
301
return shootFrame (driver , frame , capture , 0 ,
301
302
useDevicePixelRatio );
302
303
}
@@ -306,12 +307,12 @@ public static PageSnapshot shootFrame(WebDriver driver, WebElement frame,
306
307
* and need to scroll while making screenshots, either vertically or
307
308
* horizontally or both directions.
308
309
*
309
- * @param driver WebDriver instance
310
- * @param capture Capture type
310
+ * @param driver WebDriver instance
311
+ * @param capture Capture type
311
312
* @return PageSnapshot instance
312
313
*/
313
314
public static PageSnapshot shootFrame (WebDriver driver , WebElement frame ,
314
- Capture capture ) {
315
+ CaptureElement capture ) {
315
316
return shootFrame (driver , frame , capture , 0 ,
316
317
true );
317
318
}
@@ -329,12 +330,22 @@ public static PageSnapshot shootFrame(WebDriver driver, WebElement frame,
329
330
* @return PageSnapshot instance
330
331
*/
331
332
public static PageSnapshot shootFrame (WebDriver driver , WebElement frame ,
332
- Capture capture , int betweenScrollTimeout , boolean useDevicePixelRatio ) {
333
+ CaptureElement capture ,
334
+ int betweenScrollTimeout , boolean useDevicePixelRatio ) {
333
335
Browser browser = new Browser (driver , useDevicePixelRatio );
334
336
browser .setBetweenScrollTimeout (betweenScrollTimeout );
335
-
336
337
browser .scrollToElement (frame );
337
- Coordinates coordinates = browser .getBoundingClientRect (frame );
338
+ Coordinates coordinates = browser .getCoordinates (frame );
339
+
340
+ Browser browserParent = new Browser (driver , useDevicePixelRatio );
341
+ if (capture != CaptureElement .VIEWPORT &&
342
+ (coordinates .getWidth () > browserParent .getViewportWidth () || coordinates .getHeight () > browserParent .getViewportHeight ())) {
343
+ throw new UnsupportedOperationException ("Full frame screenshot is" +
344
+ " " +
345
+ "only available if WHOLE frame is fully visible in the " +
346
+ "viewport. Use CaptureElement.VIEWPORT in case frame is " +
347
+ "outside of visible viewport." );
348
+ }
338
349
driver .switchTo ().frame (frame );
339
350
340
351
if (beforeShootCondition != null ) {
@@ -346,17 +357,23 @@ public static PageSnapshot shootFrame(WebDriver driver, WebElement frame,
346
357
347
358
PageSnapshot pageScreenshot = new PageSnapshot (driver , browser .getDevicePixelRatio ());
348
359
switch (capture ) {
349
- case VIEWPORT :
350
- pageScreenshot .setImage (browser .takeFrameViewportScreenshot ());
351
- break ;
352
360
case VERTICAL_SCROLL :
353
- pageScreenshot .setImage (browser .takeFullPageVerticalScreenshot (true , coordinates ));
361
+ pageScreenshot .setImage (browser
362
+ .takeFullPageVerticalScreenshotScroll (coordinates ));
354
363
break ;
355
364
case HORIZONTAL_SCROLL :
356
- pageScreenshot .setImage (browser .takeFullPageHorizontalScreenshot (true , coordinates ));
365
+ pageScreenshot .setImage (browser
366
+ .takeFullPageHorizontalScreenshotScroll (coordinates ));
367
+ break ;
368
+ case FULL_SCROLL :
369
+ pageScreenshot .setImage (browser
370
+ .takeFullPageScreenshotScroll (coordinates ));
357
371
break ;
358
372
default :
359
- pageScreenshot .setImage (browser .takeFullPageScreenshotScroll (true , coordinates ));
373
+ pageScreenshot .setImage (browser
374
+ .takeFrameViewportScreenshot (coordinates ));
375
+ break ;
376
+
360
377
}
361
378
return pageScreenshot ;
362
379
}
@@ -372,21 +389,21 @@ public static PageSnapshot shootFrame(WebDriver driver, WebElement frame,
372
389
* @return PageSnapshot instance
373
390
*/
374
391
public static PageSnapshot shootFrame (WebDriver driver , String frameId ,
375
- Capture capture ) {
392
+ CaptureElement capture ) {
376
393
WebElement frame = driver .findElement (By .id (frameId ));
377
394
return shootFrame (driver , frame , capture , true );
378
395
}
379
396
380
397
/**
381
398
* To be used when screenshotting the frame
382
- * Takes full frame screenshot be default
399
+ * Takes viewport of the frame screenshot be default
383
400
*
384
401
* @param driver WebDriver instance
385
402
* @param frameId Id of the frame element
386
403
* @return PageSnapshot instance
387
404
*/
388
405
public static PageSnapshot shootFrame (WebDriver driver , String frameId ) {
389
406
WebElement frame = driver .findElement (By .id (frameId ));
390
- return shootFrame (driver , frame , Capture . FULL_SCROLL , true );
407
+ return shootFrame (driver , frame , CaptureElement . VIEWPORT , true );
391
408
}
392
409
}
0 commit comments