有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用for循环一个接一个地捕获所有“li”元素的屏幕截图

我有一个列表中的10个项目标签,并希望采取一次一个项目的列表截图等等,但我写的代码捕获整个页面截图,也希望滚动时,其余的“李”元素是隐藏的,所以只有它应该滚动并采取截图。下面是截取的代码

        Image Link -: https://i.stack.imgur.com/WB6Nh.png
         
        List<WebElement> list = driver.findElements(By.cssSelector(".search-results__list > li"));
        System.out.println("Total number of items :"+list.size());
        //It returns with 10 items
        
        //Scroll and capture screenshot
        for(int i= 1; i<=list.size(); i++)
        {
            WebElement element = driver.findElement(By.cssSelector(".search-results__list > li"));    
            
            //Get entire page screenshot
            File screenshots = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
            BufferedImage  fullImg = ImageIO.read(screenshots);
            
            // Get the location of element on the page
            Point point = Decision_Maker.getLocation();
            
            //Get width and height of the element
            int eleWidth =  Decision_Maker.getSize().getWidth();
            int eleHeight = Decision_Maker.getSize().getHeight();
            
            //Crop the entire page screenshot to get only element screenshot
            BufferedImage eleScreenshot= fullImg.getSubimage(point.getX(), point.getY(),
                eleWidth, eleHeight);
            
            String location = "E:\\Screenshots\\";              
            Thread.sleep(3000);
            
            //Scroll when element gets hide
            JavascriptExecutor js = (JavascriptExecutor) driver;
            js.executeScript("arguments[0].scrollIntoView();", element);   
            Thread.sleep(3000);         
            FileUtils.copyFile(screenshots,new File(location +  "img" + i + ".jpg"));
        }
        

共 (1) 个答案

  1. # 1 楼答案

    试试像这样的东西

     FileUtils.copyFile(screenshots,new File(location +  "img" + i + ".jpg"));