《手把手教你》系列技巧篇(六十)-java+ selenium自動化測試 – 截圖三劍客 -中篇(詳細教程)

1.簡介  

  前面我們介紹了Selenium中TakeScreenshot類來截圖,得到的圖片是瀏覽器窗口內的截圖。有時候,只截瀏覽器窗口內的圖是不夠的,而且TakeScreenshot截圖只針對瀏覽器的web事件,假如你在運行腳本過程,windows上有一個其他軟體彈出了一個購物的彈窗頁面,這個時候就會干擾你截圖。所以,有時候我們需要整個螢幕截圖,這個時候我們就需要用到Robot這個類。原理大概是,從電腦螢幕左上角畫一個長方形,一直畫到螢幕右下角,然後得到File對象,在把這個File是用png還是jpg保存,複製到一個具體路徑,這個就是截圖的整個流程。

  按照計劃宏哥今天將介紹java+ selenium自動化測試截圖操作實現的第二種截圖方法,也就是截圖的第二劍客 – Robot。

2.Robot

  該方法會截取螢幕內的所有內容,包括系統自帶的任務欄以及瀏覽器的導航欄和操作菜單。我們用搜狐首頁來截圖,看看截圖效果。

3.測試場景

具體步驟就是:

(1)訪問搜狐首頁

(2)調用截圖類截圖

(3)保存截圖

4.自動化實戰

4.1程式碼設計

FileUtils.copyFile(srcFile, new File(“RobotScreenshots”,  “robot_screen01.png”));「螢幕截圖」是我們自己創建的文件夾用來存放截圖文件,此文件夾在project(工程)的更目錄,如下圖所示:

當然也是可以設置保存到其他目錄下:FileUtils.copyFile(srcFile, new File("D:\\資料圖片",  "robot_screen01.png"));

示例程式碼如下圖所示:

4.2參考程式碼

package lessons;

import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;  

import javax.imageio.ImageIO;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

/**
 * @author 北京-宏哥
 * 
 * @公眾號:北京宏哥
 * 
 * @《手把手教你》系列技巧篇(六十)-java+ selenium自動化測試 - 截圖三劍客 -中篇(詳細教程)
 *
 * @2022年01月09日
 */
public class RobotScreenShot {
    
    public static void main(String[] args) throws Exception {
  
        System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();  
        driver.manage().window().maximize();  
        driver.get("//www.sohu.com/");
        robotSnapshot();
        Thread.sleep(2000);
        System.out.println("browser will be close");
        driver.quit();
         
    }
     
    /**
     * 截屏方法二、Robot實現截屏
     * @throws Exception
     */
    public static void robotSnapshot() throws Exception {
        //調用截圖方法
        BufferedImage img = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
        ImageIO.write(img, "png", new File("RobotScreenshots","robot_screen01.png"));
    }

}

4.3運行程式碼

1.運行程式碼,右鍵Run AS->Java Appliance,控制台輸出,如下圖所示:

2.文件保存結果及預覽,如下圖所示:

3.運行程式碼後電腦端的瀏覽器的動作,如下小影片所示:

5.小結

robot方法如果你沒有創建文件夾,或者填寫路徑沒有不存在,程式碼會報錯:系統找不到指定的路徑,因此需要你在運行程式碼前將文件夾創建好。如下圖所示: