当前位置: 首页 > news >正文

做网站设计累吗海口网站建设平台

做网站设计累吗,海口网站建设平台,最火网页传奇游戏排行榜,沃通 wordpress一、CDP 截图 CDP 截图,是通过 Chrome 的 Chrome DevTools Protocol (CDP) 协议进行截图。如果需要使用这个,需要保证 浏览器版本,浏览器驱动,项目 selenium 依赖,chrome cdp 的依赖。这些版本…

一、CDP 截图

CDP 截图,是通过 Chrome 的 Chrome DevTools Protocol (CDP) 协议进行截图。如果需要使用这个,需要保证 浏览器版本,浏览器驱动,项目 selenium 依赖,chrome cdp 的依赖。这些版本需要对应后,才能正常使用。

// 1. 查找 CDP 版本
Optional<CdpVersion> optional = new CdpVersionFinder().match(driver.capabilities.browserVersion);
if (!optional.isPresent()) {throw new RuntimeException("No CDP version found. Please check the browser version to select the correct CDP version");
}// 2. 构造参数
Map<String, Object> params = new HashMap<>();
params.put("format", "png");
params.put("captureBeyondViewport", true);// 3. 执行 CDP 命令
@SuppressWarnings("unchecked")
Map<String, String> response = (Map<String, String>) driver.executeCdpCommand("Page.captureScreenshot", params);// 4. 提取并处理 base64 图像数据
String data = response.get("data");
String base64Image = data.replaceFirst("^data:image/png;base64,", "");

二、修改浏览器大小截图

通过将浏览器的大小修改为页面的大小,这样截图天生就是长截图但是需要注意:如果想要截图需要使用无头浏览器,否则截取的图片大小不会超过视窗窗口的大小的。


public class ScreenshotUtils {/*** 截取整个页面的屏幕截图(包括超出视口的部分)** @param instance   TakesScreenshot 实例(WebDriver 或 WebElement)* @param returnType 返回类型(如 OutputType.FILE 或 OutputType.BYTES)* @param <T>        返回值类型* @return 截图结果*/public static <T> T fullScreenshotAsT(TakesScreenshot instance, Class<T> returnType) {WebDriver driver;// 确定 WebDriver 实例if (instance instanceof WebDriver) {driver = (WebDriver) instance;} else if (instance instanceof WebElement) {if (instance instanceof WrapsDriver) {driver = ((WrapsDriver) instance).getWrappedDriver();} else {throw new UnsupportedOperationException("WebElement does not wrap a WebDriver");}} else {throw new UnsupportedOperationException("Unsupported TakesScreenshot type: " + instance.getClass().getName());}// 获取原始窗口大小Dimension originalSize = driver.manage().window().getSize();// 获取整个页面的滚动尺寸Dimension scrollSize = getFullPageSize(driver);// 调整窗口大小以适应整个页面driver.manage().window().setSize(scrollSize);T screenshot = null;try {// 截图screenshot = instance.getScreenshotAs(returnType);} finally {// 恢复窗口大小driver.manage().window().setSize(originalSize);}return screenshot;}/*** 获取整个页面的滚动尺寸(包括超出视口的部分)** @param driver WebDriver 实例* @return 页面的完整尺寸*/private static Dimension getFullPageSize(WebDriver driver) {JavascriptExecutor js = (JavascriptExecutor) driver;Long scrollHeight = (Long) js.executeScript("return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)");Long scrollWidth = (Long) js.executeScript("return Math.max(document.body.scrollWidth, document.documentElement.scrollWidth)");return new Dimension(scrollWidth.intValue(), scrollHeight.intValue());}
}

三、 AShot 截图库

public class ScreenshotUtils {/*** 获取当前页面的 devicePixelRatio(DPR)** @param driver WebDriver 实例* @return devicePixelRatio 值*/public static float getDevicePixelRatio(WebDriver driver) {Object result = ((JavascriptExecutor) driver).executeScript("return window.devicePixelRatio;");if (result instanceof Number) {return ((Number) result).floatValue();}return 1.0f; // 默认值}/*** 使用 AShot 截图策略,返回 BufferedImage** @param instance TakesScreenshot 实例(WebDriver 或 WebElement)* @param <T>      返回值类型(如 BufferedImage)* @return 截图的 BufferedImage*/public static BufferedImage takeScreenshotWithDpr(TakesScreenshot instance) {WebDriver driver;if (instance instanceof WebDriver) {driver = (WebDriver) instance;} else if (instance instanceof WebElement) {if (instance instanceof WrapsDriver) {driver = ((WrapsDriver) instance).getWrappedDriver();} else {throw new UnsupportedOperationException("WebElement does not wrap a WebDriver");}} else {throw new UnsupportedOperationException("Unsupported TakesScreenshot type: " + instance.getClass().getName());}float dpr = getDevicePixelRatio(driver);ShootingStrategy shootingStrategy = ShootingStrategies.viewportRetina(800, 0, 0, dpr);AShot aShot = new AShot().shootingStrategy(shootingStrategy).coordsProvider(new WebDriverCoordsProvider());BufferedImage bufferedImage;if (instance instanceof WebDriver) {bufferedImage = aShot.takeScreenshot(driver).getImage();} else if (instance instanceof WebElement) {WebElement element = (WebElement) instance;bufferedImage = aShot.takeScreenshot(driver, element).getImage();} else {throw new IllegalStateException("Unexpected TakesScreenshot instance");}return bufferedImage;}
}
http://www.dtcms.com/a/433598.html

相关文章:

  • 网站模板服务商阿里云企业邮箱收费标准
  • 贵阳58同城做网站wap网站的好处
  • 有没有一个网站做黄油视频邯郸最近发生的重大新闻
  • 广州知名网站建设公司区块链开发是什么意思
  • 外贸网站模板哪里下载Wordpress税表
  • 开发一个功能网站多少钱付钱做编程题目的网站
  • 石家庄网站app制作外贸家具网站
  • 网站好坏中国建设银行龙网站首页
  • 网站构建嘉兴外贸网站建设
  • 栖霞做网站价格北京宏福建设有限公司网站
  • 学中文网站电子商务网站建设教程pdf
  • 如何查看网站开发公司海报模板图片
  • 自建视频网站成都消防设计公司
  • 微信小说网站开发设计一个网站多少钱
  • 门户网站收录wordpress恢复小工具
  • 安装了lnmp怎么做网站百度seo查询
  • 多多进宝怎么做自己网站室内设计公司图片
  • 太原网站建设哪家最好京东seo是什么意思
  • 中式建筑网站做润滑油网站图片
  • 唐山哪里建设网站好办营业执照要多少钱
  • 网站建设的实际价值小面网站建设
  • 外贸免费建设网站wordpress 启用xmlrpc
  • 江门网站制作软件深圳网站制作推广
  • 保定自助建站软件wordpress新手建站
  • 网站开发与网页制作难不难网站排名优化公司
  • 青岛电子商务的网站建设wordpress首页小工具
  • 贵阳优化网站建设附近短期电脑培训班
  • 自学做网站可以赚钱吗服务器怎么做看视频的网站
  • 北城旺角做网站的沃尔玛的网站建设
  • 浅谈电子商务网站建设今鼎网站建设