首页 > 解决方案 > 如何使用 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"));

标签: javajxbrowser

解决方案


没有 API 可以一次性完成。但是以下方法应该有效:

  1. 拍摄整个页面的快照。这在这里描述:https ://jxbrowser-support.teamdev.com/docs/6/guides/content.html#saving-web-page-to-png

  2. 获取页面内元素的边界,并手动将这个区域从元素中剪切出来。以下是获取边界的方法: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--


推荐阅读