捕获页面上所有元素的屏幕截图

桑迪普·劳洛(Sandeep Raulo)

我正在尝试捕获网页上所有元素的屏幕快照,并希望将其存储在我为其编写了以下代码的磁盘中。

唯一的问题是这段代码仅在第一次迭代中起作用,此后发生了一些意外的事情。

List<WebElement> eleId = driver.findElements(By.xpath("//*[@id]")); //fetch all the elements with ID attribute
    System.out.println(eleId.size());

    for (int i = 0;i < eleId.size();i++) {

//          Get entire page screenshot
            File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
            BufferedImage fullImg = ImageIO.read(screenshot);

//          Get the location of element on the page
            Point point = eleId.get(i).getLocation();

//          Get width and height of the element
            int eleWidth = eleId.get(i).getSize().getWidth();
            int eleHeight = eleId.get(i).getSize().getHeight();

//          Crop the entire page screenshot to get only element screenshot
            BufferedImage eleScreenshot = fullImg.getSubimage(point.getX(), point.getY(), eleWidth, eleHeight);
            ImageIO.write(eleScreenshot, "png", screenshot);

//          Creating variables name for image to be stores in the disk
            String fileName = eleId.get(i).getAttribute("id");
            String imageLocation = "D:\\" + fileName + ".png";
//          System.out.println(imageLocation);

//          Copy the element screenshot to disk
            File screenshotLocation = new File(imageLocation);
            FileUtils.copyFile(screenshot, screenshotLocation);

            System.out.println("Screenshot has been stored.");
}
桑迪潘·普拉曼尼克(Sandipan Pramanik)

您好Sandeep尝试下面的代码。它为我工作。我只是添加了一个“如果”条件来检查图像的高度和宽度。

@Test(enabled=true)
public void getIndividualElementScreenShot() throws IOException{
    WebDriver driver = new FirefoxDriver();
    driver.get("http://www.google.com/");
    driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
    driver.manage().window().maximize();
    List<WebElement> eles = driver.findElements(By.xpath("//*[@id]"));
    System.out.println(eles.size());
    for(WebElement ele : eles){
        //Get Entire page screen shot
        File screenShot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        BufferedImage fullImage = ImageIO.read(screenShot);

        //Get the location on the page
        Point point = ele.getLocation();

        //Get width and height of an element
        int eleWidth = ele.getSize().getWidth();
        int eleHeight = ele.getSize().getHeight();

        //Cropping the entire page screen shot to have only element screen shot
        if(eleWidth != 0 && eleHeight != 0){
            BufferedImage eleScreenShot = fullImage.getSubimage(point.getX(), point.getY(), eleWidth, eleHeight);
            ImageIO.write(eleScreenShot, "png", screenShot);


            //Creating variable name for image to be store in disk
            String fileName = ele.getAttribute("id");
            String imageLocation = "F:\\ElementImage\\"+fileName+".png";
            System.out.println(imageLocation);

            //Copy the element screenshot to disk
            File screenShotLocation = new File(imageLocation);
            org.apache.commons.io.FileUtils.copyFile(screenShot, screenShotLocation);

            System.out.println("Screen shot has beed stored");

        }
    }
    driver.close();
    driver.quit();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Xvfb,Jenkins,Selenium测试-捕获所有页面的屏幕截图

来自分类Dev

Xvfb,Jenkins,Selenium测试-捕获所有页面的屏幕截图

来自分类Dev

如何捕获窗口及其所有窗口的屏幕截图?

来自分类Dev

如何捕获窗口及其所有窗口的屏幕截图?

来自分类Dev

Android移动设备管理:禁用所有应用程序的屏幕截图捕获

来自分类Dev

是否可以在页面上显示所有元素:flex(flexbox)?

来自分类Dev

如何使Polymer元素占据页面上的所有垂直空间?

来自分类Dev

是否可以在页面上显示所有元素:flex(flexbox)?

来自分类Dev

加载动画并锁定页面上的所有元素

来自分类Dev

同步捕获屏幕截图

来自分类Dev

捕获警报的屏幕截图

来自分类Dev

在插值之前捕获页面上的所有翻译文本

来自分类Dev

有没有办法只替换页面上所有元素的innerText?

来自分类Dev

如何裁剪捕获的屏幕截图?

来自分类Dev

带有参数和屏幕截图的Inno Setup页面列表

来自分类Dev

在Selenium Web驱动程序中的特定错误页面上进行屏幕截图

来自分类Dev

Python和Selenium-如何找到页面上的所有元素ID?

来自分类Dev

在所有页面上使用fadeto jquery函数,但元素很少(带标签)

来自分类Dev

获取值设置为foo的页面上的所有Select元素

来自分类Dev

Rails路线,在同一页面上显示所有元素

来自分类Dev

所有设备的应用商店屏幕截图大小

来自分类Dev

iTunes查找所有屏幕截图版本?

来自分类Dev

创建表单背后所有内容的屏幕截图

来自分类Dev

快速获取所有Webview的完整屏幕截图

来自分类Dev

禁用页面上的所有按钮

来自分类Dev

Scrapy XPath页面上的所有链接

来自分类Dev

UIPageViewController所有页面上的UIButton

来自分类Dev

计算html页面上的所有<a>

来自分类Dev

侦听页面上的所有滚动事件

Related 相关文章

  1. 1

    Xvfb,Jenkins,Selenium测试-捕获所有页面的屏幕截图

  2. 2

    Xvfb,Jenkins,Selenium测试-捕获所有页面的屏幕截图

  3. 3

    如何捕获窗口及其所有窗口的屏幕截图?

  4. 4

    如何捕获窗口及其所有窗口的屏幕截图?

  5. 5

    Android移动设备管理:禁用所有应用程序的屏幕截图捕获

  6. 6

    是否可以在页面上显示所有元素:flex(flexbox)?

  7. 7

    如何使Polymer元素占据页面上的所有垂直空间?

  8. 8

    是否可以在页面上显示所有元素:flex(flexbox)?

  9. 9

    加载动画并锁定页面上的所有元素

  10. 10

    同步捕获屏幕截图

  11. 11

    捕获警报的屏幕截图

  12. 12

    在插值之前捕获页面上的所有翻译文本

  13. 13

    有没有办法只替换页面上所有元素的innerText?

  14. 14

    如何裁剪捕获的屏幕截图?

  15. 15

    带有参数和屏幕截图的Inno Setup页面列表

  16. 16

    在Selenium Web驱动程序中的特定错误页面上进行屏幕截图

  17. 17

    Python和Selenium-如何找到页面上的所有元素ID?

  18. 18

    在所有页面上使用fadeto jquery函数,但元素很少(带标签)

  19. 19

    获取值设置为foo的页面上的所有Select元素

  20. 20

    Rails路线,在同一页面上显示所有元素

  21. 21

    所有设备的应用商店屏幕截图大小

  22. 22

    iTunes查找所有屏幕截图版本?

  23. 23

    创建表单背后所有内容的屏幕截图

  24. 24

    快速获取所有Webview的完整屏幕截图

  25. 25

    禁用页面上的所有按钮

  26. 26

    Scrapy XPath页面上的所有链接

  27. 27

    UIPageViewController所有页面上的UIButton

  28. 28

    计算html页面上的所有<a>

  29. 29

    侦听页面上的所有滚动事件

热门标签

归档