首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在selenium中捕获具有粘性标题的完整网页截图

在selenium中捕获具有粘性标题的完整网页截图
EN

Stack Overflow用户
提问于 2018-10-09 19:52:30
回答 4查看 2K关注 0票数 1

我想要捕获具有粘性标题的网页的全页屏幕截图。比方说,https://www.flipkart.com/站点有粘性标题。我使用的是Ashot,截图如下所示。https://www.flipkart.com/

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

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

EN

回答 4

Stack Overflow用户

发布于 2018-10-09 20:04:12

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

有很多选项可以用来裁剪页面。

First solution Try with ignore-屏幕的某些部分,如从顶部开始的10px。你得玩一下调校。

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

我就是这么做的。禁用顶部页眉:

代码语言:javascript
运行
复制
((JavascriptExecutor) driver).executeScript("$('.common-header').css('position', 'relative');");

BufferedImage img = Shutterbug.shootPage(driver, ScrollStrategy.BOTH_DIRECTIONS, 100, true)
                .getImage();
票数 2
EN

Stack Overflow用户

发布于 2019-08-28 14:44:10

使用ShutterBug截取全页屏幕截图

代码语言:javascript
运行
复制
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

票数 0
EN

Stack Overflow用户

发布于 2019-12-13 13:55:20

这可能会对你有帮助。不建议使用JAVASCRIPT移除或更改粘性标题的样式属性并获取可滚动屏幕截图,因为这被认为是测试和生成屏幕照片的标准方法。

最好的方法是使用JS,找到全页高度、视区高度、粘性标题高度和滚动并截取屏幕截图。您可以使用以下代码。

代码语言:javascript
运行
复制
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 **/  
 }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52720450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档