Web截图保存+WebElement截图
import org.openqa.selenium.*; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.nio.channels.FileChannel; public class Screenshot { /** * @param driver chromedriver * @param targetFolderPath 目标文件夹 * @return imagePath */ public String WebScreenshot(WebDriver driver, String targetFolderPath) { // 将 WebDriver 强制转换为 TakesScreenshot 接口 TakesScreenshot ts = (TakesScreenshot) driver; // 调用 getScreenshotAs() 方法进行截图 File screenshotFile = ts.getScreenshotAs(OutputType.FILE); //目标问价夹是否存在 File targetFolder = new File(targetFolderPath); if (!targetFolder.exists()) { //目标文件夹不存在,则新建 targetFolder.mkdirs(); } //截图命名 String targetImagePath = targetFolderPath +File.separator+ System.currentTimeMillis() + ".png"; File targetImage = new File(targetImagePath); try (FileInputStream fis = new FileInputStream(screenshotFile); FileOutputStream fos = new FileOutputStream(targetImage); FileChannel sourceChannel = fis.getChannel(); FileChannel targetChannel = fos.getChannel()) { long size = sourceChannel.size(); long transferred = 0; while (transferred < size) { transferred += sourceChannel.transferTo(transferred, size - transferred, targetChannel); } return targetImagePath; } catch (Exception e) { e.printStackTrace(); return "图片保存失败"; } } /** * 截图元素并识别返回打码数据 * @param driver * @param element * @return code */ public String WebElementScreenshot(WebDriver driver, WebElement element) { try { // Get entire page screenshot File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); BufferedImage fullImg = ImageIO.read(screenshot); // Get the location of element on the page Point point = element.getLocation(); // Get width and height of the element int eleWidth = element.getSize().getWidth(); int eleHeight = element.getSize().getHeight(); // Crop the entire page screenshot to get only element screenshot BufferedImage eleScreenshot = fullImg.getSubimage(point.getX(), point.getY(), eleWidth, eleHeight); ImageIO.write(eleScreenshot, "png", screenshot); //fileImageToBase64 转码 String base64Str = ImageToBase64.fileImageToBase64(screenshot); //识别验证码并返回code return new YdmVerify().commonVerify(base64Str); } catch (Exception e) { e.printStackTrace(); return "元素截取失败"; } } }