JAVA+selenium 截圖操作


  參考:https://www.cnblogs.com/longronglang/p/11332194.html

  執行自動化測試的時候,我們常常會碰到測試執行失敗的時候。但是失敗我們不能只看執行失敗代碼,如果有截圖的話,就能很明顯直觀的看到是哪個地方執行失敗。

  這里介紹兩種方法,一種是selenium工具自帶的截圖方法,一種是通過Robot,自動化執行的時候,建議將瀏覽器最大化

 

第一種:selenium之TakesScreenshot

  該方法可以只截取自動化運行的瀏覽器窗口內,不會截取瀏覽器的操作按鈕和系統的任務欄區域

  

   @Test
    public void screenshot(){
        //自己重新封裝的訪問url方法
        to("https://www.baidu.com");
        File srcfile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
        try {
            FileUtils.copyFile(srcfile, new File("H:\\12\\takescreen截圖.jpg"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

 

   文件保存以及運行結果:

 

  

 

   

 

 

第二種:通過Robot截圖

  該方法會截取屏幕內的所有內容,包括系統自帶的任務欄以及瀏覽器的導航欄和操作菜單

  

  @Test
    public void screenByRobot(){
        to("https://www.sohu.com/");
        BufferedImage image = null;
        try {
            image = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
            ImageIO.write(image, "jpg", new File("H:\\12\\rebot截圖.jpg"));
        } catch (AWTException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

 

  運行結果查看:

 

  

 

 

附:

 第三種:保存指定元素截圖

  手動封裝一個方法,只需要傳遞指定頁面,頁面定位的元素即可。

 

public class ElementPicture {
    public static File captureElement(File screenshot, WebElement element){
        try {
            BufferedImage img = ImageIO.read(screenshot);
            int width = element.getSize().getWidth();
            int height = element.getSize().getHeight();
            //獲取指定元素的坐標
            Point point = element.getLocation();
            //從元素左上角坐標開始,按照元素的高寬對img進行裁剪為符合需要的圖片
            BufferedImage dest = img.getSubimage(point.getX(), point.getY(), width, height);
            ImageIO.write(dest, "png", screenshot);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return screenshot;
    }
}

 

  進行使用及查看

 

     driver.get("https://www.baidu.com/");
        Thread.sleep(2000);
        WebElement setting = driver.findElement(By.id("s-usersetting-top"));
        Actions actions = new Actions(driver);
        actions.clickAndHold(setting).perform();
        driver.findElement(By.linkText("搜索設置")).click();
        WebElement xuanxiang = driver.findElement(By.xpath("/html/body/div[1]/div[6]/div"));
        File src = ((FirefoxDriver) driver).getScreenshotAs(OutputType.FILE);
        try {

            FileUtils.copyFile(src, new File("D:\\screenshoot\\result.png"));
            FileUtils.copyFile(ElementPicture.captureElement(src, xuanxiang), new File("D:\\screenshoot\\test.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }

 

  

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM