本篇文章給大家分享的是有關(guān)Java中怎么利用selenium實(shí)現(xiàn)截圖操作,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
創(chuàng)新互聯(lián)秉承實(shí)現(xiàn)全網(wǎng)價(jià)值營(yíng)銷的理念,以專業(yè)定制企業(yè)官網(wǎng),網(wǎng)站制作、成都做網(wǎng)站,小程序定制開(kāi)發(fā),網(wǎng)頁(yè)設(shè)計(jì)制作,成都做手機(jī)網(wǎng)站,成都全網(wǎng)營(yíng)銷推廣幫助傳統(tǒng)企業(yè)實(shí)現(xiàn)“互聯(lián)網(wǎng)+”轉(zhuǎn)型升級(jí)專業(yè)定制企業(yè)官網(wǎng),公司注重人才、技術(shù)和管理,匯聚了一批優(yōu)秀的互聯(lián)網(wǎng)技術(shù)人才,對(duì)客戶都以感恩的心態(tài)奉獻(xiàn)自己的專業(yè)和所長(zhǎng)。
方法一:Selenium中截圖類TakeScreenshout,這個(gè)類主要是獲取瀏覽器窗體內(nèi)的內(nèi)容,不包括瀏覽器的菜單和桌面的任務(wù)欄區(qū)域,我們用百度首頁(yè)來(lái)截圖,看看截圖效果。
FileUtils.copyFile(srcFile, new File("屏幕截圖", time + ".png"));“屏幕截圖”是我們自己創(chuàng)建的文件夾用來(lái)存放截圖文件,此文件夾在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)前時(shí)間命名 */SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); //轉(zhuǎn)換時(shí)間格式String time = dateFormat.format(Calendar.getInstance().getTime()); //獲取當(dāng)前時(shí)間File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); //執(zhí)行屏幕截取FileUtils.copyFile(srcFile, new File("屏幕截圖", time + ".png")); //利用FileUtils工具類的copyFile()方法保存getScreenshotAs()返回的文件;"屏幕截圖"即時(shí)保存截圖的文件夾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實(shí)現(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"));}
方法三:在測(cè)試的過(guò)程中,有時(shí)候不需要截取整個(gè)屏幕,只需要截取某個(gè)元素(或者目標(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()獲取時(shí)間戳的方法FileUtils.copyFile(elementSnapshot(element), new File("屏幕截圖", System.currentTimeMillis()+".png"));Thread.sleep(2000);driver.quit();} /** * 部分截圖(元素截圖) * 有時(shí)候需要元素的截圖,不需要整個(gè)截圖 * @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)建一個(gè)矩形使用上面的高度,和寬度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實(shí)現(xiàn)截圖操作,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。