溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java中怎么利用selenium實現(xiàn)截圖操作

發(fā)布時間:2021-08-09 16:46:57 來源:億速云 閱讀:182 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關(guān)Java中怎么利用selenium實現(xiàn)截圖操作,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

方法一:Selenium中截圖類TakeScreenshout,這個類主要是獲取瀏覽器窗體內(nèi)的內(nèi)容,不包括瀏覽器的菜單和桌面的任務(wù)欄區(qū)域,我們用百度首頁來截圖,看看截圖效果。

FileUtils.copyFile(srcFile, new File("屏幕截圖", time + ".png"));“屏幕截圖”是我們自己創(chuàng)建的文件夾用來存放截圖文件,此文件夾在project(工程)的更目錄

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

示例代碼如下:

package com.sandy; import java.io.File;import java.text.SimpleDateFormat;import java.util.Calendar; import org.apache.commons.io.FileUtils;import org.openqa.selenium.OutputType;import org.openqa.selenium.TakesScreenshot;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver; public class ScreenShot { private static WebDriver driver;public static void main(String[] args) throws Exception { System.setProperty("webdriver.chrome.driver", "E:\\eclipse_jar\\selenium_jar\\chromedriver.exe");driver = new ChromeDriver();driver.get("http://www.baidu.com");driver.manage().window().maximize();/** * 截屏操作 * 圖片已當(dāng)前時間命名 */SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); //轉(zhuǎn)換時間格式String time = dateFormat.format(Calendar.getInstance().getTime()); //獲取當(dāng)前時間File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); //執(zhí)行屏幕截取FileUtils.copyFile(srcFile, new File("屏幕截圖", time + ".png")); //利用FileUtils工具類的copyFile()方法保存getScreenshotAs()返回的文件;"屏幕截圖"即時保存截圖的文件夾Thread.sleep(2000);driver.quit();} }

方法二:Robot截屏

示例代碼:(示例中的圖片是保存再該工程的根目錄下)

package com.sandy; import java.awt.Rectangle;import java.awt.Robot;import java.awt.Toolkit;import java.awt.image.BufferedImage;import java.io.File;import java.text.SimpleDateFormat;import java.util.Calendar; import javax.imageio.ImageIO; import org.apache.commons.io.FileUtils;import org.openqa.selenium.By;import org.openqa.selenium.OutputType;import org.openqa.selenium.Point;import org.openqa.selenium.TakesScreenshot;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.internal.WrapsDriver; public class ScreenShot { private static WebDriver driver;public static void main(String[] args) throws Exception { System.setProperty("webdriver.chrome.driver", "E:\\eclipse_jar\\selenium_jar\\chromedriver.exe");driver = new ChromeDriver();driver.get("http://www.baidu.com");driver.manage().window().maximize();robotSnapshot();Thread.sleep(2000);driver.quit();}/** * 截屏方法二、Robot實現(xiàn)截屏 * @throws Exception */public static void robotSnapshot() throws Exception {//調(diào)用截圖方法BufferedImage img = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));ImageIO.write(img, "png", new File("robot_screen01.png"));}

方法三:在測試的過程中,有時候不需要截取整個屏幕,只需要截取某個元素(或者目標(biāo)區(qū)域)的圖片

示例代碼:

package com.sandy; import java.awt.Rectangle;import java.awt.Robot;import java.awt.Toolkit;import java.awt.image.BufferedImage;import java.io.File;import java.text.SimpleDateFormat;import java.util.Calendar; import javax.imageio.ImageIO; import org.apache.commons.io.FileUtils;import org.openqa.selenium.By;import org.openqa.selenium.OutputType;import org.openqa.selenium.Point;import org.openqa.selenium.TakesScreenshot;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.internal.WrapsDriver; public class ScreenShot { private static WebDriver driver;public static void main(String[] args) throws Exception { System.setProperty("webdriver.chrome.driver", "E:\\eclipse_jar\\selenium_jar\\chromedriver.exe");driver = new ChromeDriver();driver.get("http://www.baidu.com");driver.manage().window().maximize();WebElement element = driver.findElement(By.id("su"));elementSnapshot(element);//System.currentTimeMillis()、Calendar.getInstance().getTimeInMillis()獲取時間戳的方法FileUtils.copyFile(elementSnapshot(element), new File("屏幕截圖", System.currentTimeMillis()+".png"));Thread.sleep(2000);driver.quit();} /** * 部分截圖(元素截圖) * 有時候需要元素的截圖,不需要整個截圖 * @throws Exception  */public static File elementSnapshot(WebElement element) throws Exception {//創(chuàng)建全屏截圖WrapsDriver wrapsDriver = (WrapsDriver)element;File screen = ((TakesScreenshot)wrapsDriver.getWrappedDriver()).getScreenshotAs(OutputType.FILE);BufferedImage image = ImageIO.read(screen);//獲取元素的高度、寬度int width = element.getSize().getWidth();int height = element.getSize().getHeight();//創(chuàng)建一個矩形使用上面的高度,和寬度Rectangle rect = new Rectangle(width, height);//元素坐標(biāo)Point p = element.getLocation();BufferedImage img = image.getSubimage(p.getX(), p.getY(), rect.width, rect.height);ImageIO.write(img, "png", screen);return screen;}}

以上就是Java中怎么利用selenium實現(xiàn)截圖操作,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI