我想要捕获具有粘性标题的网页的全页屏幕截图。比方说,https://www.flipkart.com/站点有粘性标题。我使用的是Ashot,截图如下所示。https://www.flipkart.com/
您可以看到标题出现在图像之间
如果我能找到任何关于如何实现的想法,那将是非常有帮助的
发布于 2018-10-09 20:04:12
尝试使用shutterbug https://github.com/assertthat/selenium-shutterbug
有很多选项可以用来裁剪页面。
First solution Try with ignore-屏幕的某些部分,如从顶部开始的10px。你得玩一下调校。
的第二个解决方案是编辑标题元素的CSS,其想法是将他的位置更改为“相对”,这样滚动时它就不会在顶部。
我就是这么做的。禁用顶部页眉:
((JavascriptExecutor) driver).executeScript("$('.common-header').css('position', 'relative');");
BufferedImage img = Shutterbug.shootPage(driver, ScrollStrategy.BOTH_DIRECTIONS, 100, true)
.getImage();
发布于 2019-08-28 14:44:10
使用ShutterBug截取全页屏幕截图
Shutterbug.shootPage(driver,ScrollStrategy.WHOLE_PAGE,500).withName("FullPageScreenshot").save("/Users/machinename/Desktop/Screen2");
必需的jars: java-semver-0.7.0.jar、selenium-shutterbug-0.9.3.jar
发布于 2019-12-13 13:55:20
这可能会对你有帮助。不建议使用JAVASCRIPT移除或更改粘性标题的样式属性并获取可滚动屏幕截图,因为这被认为是测试和生成屏幕照片的标准方法。
最好的方法是使用JS,找到全页高度、视区高度、粘性标题高度和滚动并截取屏幕截图。您可以使用以下代码。
public void scrollTheStickyHeaderPage(){
/** This function scrolls and takes screenshot **/
JavascriptExecutor js = (JavascriptExecutor) driver;
int fullPageHeight = Integer.parseInt(js.executeScript
("return document.documentElement.ScrollHeight").toString());
int viewportHeight = Integer.parseInt(js.executeScript("return Math.max
(document.documentElement.clientHeight, window.innerHeight || 0)").toString());
int headerHeight = Integer.parseInt(js.executeScript("return Math.max
(document.getElementsByTagName('/**element**/')[0].clientHeight,
document.getElementsByTagName('/**element**/')[0].offsetHeight,
document.getElementsByTagName('/**element**/')[0].scrollHeight || 0)").toString());
int numofScrolls = (fullPageHeight/viewportHeight);
/** call your screenshot function **/
for(int i=1; i<=numofScrolls; i++){
js.executeScript("window.scrollBy(0,"+(viewportHeight-headerHeight)+")");
/** call your screenshot function **/
}
}
https://stackoverflow.com/questions/52720450
复制相似问题