java - 如何使用 JXBrowser 捕获特定元素而不是整个页面的屏幕截图?
问题描述
我想要的只是捕获页面的一部分,或者可能只是基于 ID 或任何特定元素定位器的特定元素。(例如,我希望捕获具有 image id ="logo" 的图片)
有没有办法按选定的项目或元素捕获屏幕截图?
Browser browser = new Browser();
BrowserView view = new BrowserView(browser);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(view, BorderLayout.CENTER);
frame.setSize(700, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
browser.loadURL("https://cafemmo.club/");
TimeUnit.SECONDS.sleep(10);
browser.getDocument().findElement(By.cssSelector("#logo"));
解决方案
没有 API 可以一次性完成。但是以下方法应该有效:
拍摄整个页面的快照。这在这里描述:https ://jxbrowser-support.teamdev.com/docs/6/guides/content.html#saving-web-page-to-png
获取页面内元素的边界,并手动将这个区域从元素中剪切出来。以下是获取边界的方法:https ://jxbrowser-support.teamdev.com/docs/6/guides/dom.html#getting-element-bounds
如果您使用的是 JxBrowser 7,他们已经引入了 API 来获取<img>
标签中图像的原始字节:https://jxbrowser-support.teamdev.com/javadoc/7.21/com/teamdev/jxbrowser/dom/ImageElement。 html#contents--
推荐阅读
- pgadmin-4 - 如何禁用 pgadmin 网络应用程序?
- dart - Flutter:我可以将参数传递给按钮上的 onPress 事件中定义的函数吗?
- jquery - jQuery:检查输入是否具有由浏览器自动填充的值
- python - Python 植入 while 循环,检查文件是否包含新数据
- tensorflow - Tensorflow:我安装了 CUDA 9.2 但它需要 9.0?
- typescript - 打字稿 - 强制集合仅包含 2 种类型
- css - 如何在使用css同时更改颜色的同时将鼠标悬停在文本上?
- reactjs - React carousel:为什么图像进入列表视图而不是进入轮播
- google-cloud-platform - GCE startup script fails to run on Ubuntu 18.04
- javascript - 数组对象中的猫鼬更新项目