1

我想捕获具有粘性标题的网页的整页屏幕截图。比如说https://www.flipkart.com/网站有粘性标题。我正在使用 Ashot,它截取了如下图所示的屏幕截图。https://www.flipkart.com/

您可以看到标题出现在图像之间

如果我能找到有关如何实现的任何想法,那将非常有帮助

在此处输入图像描述

4

4 回答 4

2

尝试使用shutterbug https://github.com/assertthat/selenium-shutterbug

您可以使用许多选项来裁剪页面。

第一个解决方案 尝试忽略屏幕的部分,例如距离顶部 10 像素。你必须玩调整。

第二种解决方案是编辑标题元素的 CSS,其想法是将其位置更改为“相对”,这样滚动时它就不会位于顶部。

我就是这样做的。禁用顶部标题:

((JavascriptExecutor) driver).executeScript("$('.common-header').css('position', 'relative');");

BufferedImage img = Shutterbug.shootPage(driver, ScrollStrategy.BOTH_DIRECTIONS, 100, true)
                .getImage();
于 2018-10-09T12:04:11.763 回答
0

使用 ShutterBug 截取整页截图

Shutterbug.shootPage(driver,ScrollStrategy.WHOLE_PAGE,500).withName("FullPageScreenshot").save("/Users/machinename/Desktop/Screen2");

所需的罐子: java-semver-0.7.0.jar , selenium-shutterbug-0.9.3.jar

于 2019-08-28T06:44:10.380 回答
0

我通过在检查编辑器中将下面提到的 CSS 代码添加到标题粘性元素中解决了这个问题。您可以在此页面上看到结果https://icrmsoftware.com/project/corporate-business-consulting-business-html-template

margin-top: -200px !important
于 2021-06-29T02:30:35.217 回答
0

这可能会对您有所帮助。不建议使用 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 **/  
 }
}
于 2019-12-13T05:55:20.353 回答