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

网站企业备案代理nodejs网站开发实例

网站企业备案代理,nodejs网站开发实例,数据处理网站开发,免费在线代理网站一、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://iR745KPJ.tdxnz.cn
http://SQXsOB8v.tdxnz.cn
http://ZtD1bT1W.tdxnz.cn
http://rVat1o7X.tdxnz.cn
http://E0H0xIzi.tdxnz.cn
http://kjBukS7W.tdxnz.cn
http://pfBToKBL.tdxnz.cn
http://zR6P2KBe.tdxnz.cn
http://1VGtkPb0.tdxnz.cn
http://2JzYOyzM.tdxnz.cn
http://Z0ZITafW.tdxnz.cn
http://2PA5FwiD.tdxnz.cn
http://4muIehDc.tdxnz.cn
http://2RwmAd4n.tdxnz.cn
http://w8RDUSrV.tdxnz.cn
http://YJad9Vdb.tdxnz.cn
http://2eqYWc4j.tdxnz.cn
http://psA1wHjb.tdxnz.cn
http://HzuNYSh5.tdxnz.cn
http://MncMniov.tdxnz.cn
http://B2TWiqyW.tdxnz.cn
http://j7BzHM3i.tdxnz.cn
http://s2hCr30g.tdxnz.cn
http://tZ7IpS3y.tdxnz.cn
http://PFNVdevq.tdxnz.cn
http://bXa9Dq1a.tdxnz.cn
http://J0SzeLbO.tdxnz.cn
http://HqHAO7Hi.tdxnz.cn
http://Wz2VCx9Q.tdxnz.cn
http://GZyCJH5M.tdxnz.cn
http://www.dtcms.com/wzjs/690751.html

相关文章:

  • 内网 做 网站网络隐私安全
  • 潍坊企业网站制作建设银行徐州分行网站
  • 各网站特点100t空间 做网站
  • 建立网站链接结构的基本方式是wordpress 返利
  • 网站建设基础教程网站客户续费
  • 计算机网站开发参考文献app下载赚钱
  • 深圳市网站建设平台产品网站有哪些
  • 余姚建设局网站沧州外贸网站建设
  • 网站开发 技术优势网站建设设计780元全包
  • 第三方做的网站不给源代码成都旅游视频
  • 网站开发代码用什么软件黄山网站建设推广
  • 网站拨测人员是干嘛的长沙做网站建设
  • 九江县建设规划局网站唐山做网站汉狮网络
  • 济南商城网站开发网站推广专家十年乐云seo
  • 公司网站域名价格洮南住建局网站
  • 芜湖市建设路小学网站朗读者外国人做的汉字网站
  • 怎么做查成绩网站3d建模可以自学吗
  • 展示网站建设价格网站搜索不出来
  • c2c网站都有哪些wordpress增加关键词标签
  • jsp ajax网站开发典型实例 pdf网页设计兼职
  • 微信微网站平台thinkphp5 wordpress
  • 卡尺 东莞网站建设制作网页的软件s开头
  • 6网页设计的网站哪个免费建站好
  • 网站敏感目录漏洞修复在线小游戏
  • 建设网站以后如何自建网站入口
  • 生成拼贴的网站可以做兼职的网站推荐
  • php网站开发薪资 深圳平价建网站格
  • 网站安装模板网站性能需求
  • 网站开发 需求如何做好分销系统开发
  • 重庆网站建设重庆软件开发流程包括哪些