UI自動化測試執行過程中,當遇到檢查失敗的情況,往往會發現打印的log并不能有效地幫助我們定位問題。我們需要失敗時刻的屏幕截圖來重現當時的失敗場景,進而排查出錯原因。
基于這種需求可以使用Selenium的屏幕截圖功能。
實現代碼如下:
import java.io.File;import java.io.IOException;import org.apache.commons.io.FileUtils;import org.apache.commons.lang3.time.DateUtils;import org.openqa.selenium.OutputType;import org.openqa.selenium.TakesScreenshot;import org.openqa.selenium.WebDriver;import org.openqa.selenium.interactions.Actions;public static void takeScreeshot(String screenPath, WebDriver chrome){ try { //指定了OutputType.FILE做為參數傳遞給getScreenshotAs()方法,其含義是將截取的屏幕以文件形式返回。 File scrFile = ((TakesScreenshot) chrome) .getScreenshotAs(OutputType.FILE); // 關鍵代碼,執行屏幕截圖,默認會把截圖保存到temp目錄 FileUtils.copyFile(scrFile, new File(screenPath)); //利用FileUtils工具類的copyFile()方法保存getScreenshotAs()返回的文件對象。 } catch (IOException e) { System.out.println("Screen shot error: " + screenPath); System.out.println("該錯誤可以查看截圖:"+screenPath); } catch (Exception e) { // TODO: handle exception } } public static void takeScreenshot(WebDriver chrome,String imgName) { String screenName=imgName+DateUtils.MILLIS_PER_DAY+".jpg"; String fileString= "D://selenium//SchoolpalERP_QTP//image"; if (!(new File(fileString).isDirectory())) { // 判斷是否存在該目錄 new File(fileString).mkdir(); // 如果不存在則新建一個目錄 } File dir = new File(fileString); if (!dir.exists()) dir.mkdirs(); String screenPath = dir.getAbsolutePath() + "//" + screenName; takeScreeshot(screenPath, chrome); }
以上這篇關于Selenium的UI自動化測試屏幕截圖功能實例代碼就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。
新聞熱點
疑難解答
圖片精選