《手把手教你》系列技巧篇(六十)-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("https://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方法如果你沒有創建文件夾,或者填寫路徑沒有不存在,代碼會報錯:系統找不到指定的路徑,因此需要你在運行代碼前將文件夾創建好。如下圖所示:


免責聲明!

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



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