如何使用java在Safari中使用粘性元素对可滚动网页进行全屏截图?

发布于 2025-01-13 13:12:47 字数 202 浏览 3 评论 0原文

我尝试用shutterbug截屏,但截屏不正确。

PageSnapshot image = Shutterbug.shootPage(driver, Capture.FULL, 500, true);
image.withName("shuteerbug").save(home + File.separator + "Desktop");

I tried taking screenshot with shutterbug but the screenshot is not proper.

PageSnapshot image = Shutterbug.shootPage(driver, Capture.FULL, 500, true);
image.withName("shuteerbug").save(home + File.separator + "Desktop");

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

天涯沦落人 2025-01-20 13:12:47

不久前,我在 Katalon Studio (groovy) 中使用 ru.yandex.qatools.ashot 将整个页面捕获为单个图像。

public class ImageManager {

    @Keyword
    def capturePageToJpg(String url, String folderPath, Viewport viewport) {
        WebDriver driver = DriverFactory.getWebDriver()
        String fileName = getEtalonImageFileName(url)
        String filePath = folderPath + fileName
        String toReturn
        Screenshot screenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(2000)).takeScreenshot(driver)
        BufferedImage image = screenshot.getImage()
        int viewportHeight = viewport.getHeight()
        int imageHeight = image.getHeight()
        int pageWidth = driver.findElement(By.tagName("body")).getRect().getWidth()
        if (imageHeight > viewportHeight) {
            image = image.getSubimage(0, 0, pageWidth, imageHeight)
        }
        ImageIO.write(image, "jpg", new File(filePath))
        File file = new File(filePath)
        if (file.exists()) {
            KeywordUtil.logInfo("Saved file: " + filePath)
            toReturn = filePath
        }
        return toReturn
    }

}

public class Viewport {
    
    String name;
    int width;
    int height;
    
    public String getName() {
        return name;
    }
    
    public int getWidth() {
        return width;
    }
    
    public int getHeight() {
        return height;
    }
    
    public Viewport(String name, int width, int height) {
        this.name = name;
        this.width = width;
        this.height = height;
    }
    
}


public class ViewportManager {

    @Keyword
    def desktop() {
        Viewport viewport = new Viewport("desktop", 1920, 1080)
        return viewport
    }

    @Keyword
    def mobileHorizontal() {
        Viewport viewport = new Viewport("mobileHorizontal", 732, 412)
        return viewport
    }

    @Keyword
    def mobileVertical() {
        Viewport viewport = new Viewport("mobileVertical", 412, 732)
        return viewport
    }

    @Keyword
    def tabletHorizontal() {
        Viewport viewport = new Viewport("tabletHorizontal", 1024, 768)
        return viewport
    }

    @Keyword
    def tabletVertical() {
        Viewport viewport = new Viewport("tabletVertical", 768, 1024)
        return viewport
    }

    @Keyword
    def setViewport(Viewport viewport) {
        int height = WebUI.getViewportHeight()
        int width = WebUI.getViewportWidth()
        if (height != viewport.getHeight() || width != viewport.getWidth()) {
            WebUI.setViewPortSize(viewport.getWidth(), viewport.getHeight())
        }
    }
}

Some time ago I was using ru.yandex.qatools.ashot to capture the whole page to a single image in Katalon Studio (groovy).

public class ImageManager {

    @Keyword
    def capturePageToJpg(String url, String folderPath, Viewport viewport) {
        WebDriver driver = DriverFactory.getWebDriver()
        String fileName = getEtalonImageFileName(url)
        String filePath = folderPath + fileName
        String toReturn
        Screenshot screenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(2000)).takeScreenshot(driver)
        BufferedImage image = screenshot.getImage()
        int viewportHeight = viewport.getHeight()
        int imageHeight = image.getHeight()
        int pageWidth = driver.findElement(By.tagName("body")).getRect().getWidth()
        if (imageHeight > viewportHeight) {
            image = image.getSubimage(0, 0, pageWidth, imageHeight)
        }
        ImageIO.write(image, "jpg", new File(filePath))
        File file = new File(filePath)
        if (file.exists()) {
            KeywordUtil.logInfo("Saved file: " + filePath)
            toReturn = filePath
        }
        return toReturn
    }

}

public class Viewport {
    
    String name;
    int width;
    int height;
    
    public String getName() {
        return name;
    }
    
    public int getWidth() {
        return width;
    }
    
    public int getHeight() {
        return height;
    }
    
    public Viewport(String name, int width, int height) {
        this.name = name;
        this.width = width;
        this.height = height;
    }
    
}


public class ViewportManager {

    @Keyword
    def desktop() {
        Viewport viewport = new Viewport("desktop", 1920, 1080)
        return viewport
    }

    @Keyword
    def mobileHorizontal() {
        Viewport viewport = new Viewport("mobileHorizontal", 732, 412)
        return viewport
    }

    @Keyword
    def mobileVertical() {
        Viewport viewport = new Viewport("mobileVertical", 412, 732)
        return viewport
    }

    @Keyword
    def tabletHorizontal() {
        Viewport viewport = new Viewport("tabletHorizontal", 1024, 768)
        return viewport
    }

    @Keyword
    def tabletVertical() {
        Viewport viewport = new Viewport("tabletVertical", 768, 1024)
        return viewport
    }

    @Keyword
    def setViewport(Viewport viewport) {
        int height = WebUI.getViewportHeight()
        int width = WebUI.getViewportWidth()
        if (height != viewport.getHeight() || width != viewport.getWidth()) {
            WebUI.setViewPortSize(viewport.getWidth(), viewport.getHeight())
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文