简体   繁体   English

如何使用 java 截取 Safari 中带有粘性元素的可滚动网页的整页截图?

[英]How to take full page screenshot of a scrollable webpage with sticky element in Safari using java?

I tried taking screenshot with shutterbug but the screenshot is not proper.我尝试使用 shutterbug 截屏,但截屏不正确。

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

Some time ago I was using ru.yandex.qatools.ashot to capture the whole page to a single image in Katalon Studio (groovy).前段时间,我在 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())
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用带有 Java 的 Selenium WebDriver 获取可滚动网页的整页屏幕截图? - How to take full page Screenshot of a scrollable webpage using Selenium WebDriver with Java? 如何通过 Selenium 和 Java 使用 AShot 库截取整页截图 - How to take full page screenshot using AShot library through Selenium and Java 如何使用 Selenium 和 Java 获取完整网页的屏幕截图? - How to get screenshot of full webpage using Selenium and Java? 如何使用Java Selenium Webdriver Ashot FireFox自动对网页进行全屏拍摄,包括固定元素 - How to automatically take full screen shot of a webpage include fixed element using java selenium webdriver ashot firefox 如何截取网页截图? - How to take a webpage screenshot? 如何使用 selenium 获取整页屏幕截图,包括可滚动弹出窗口的所有内容 - How to get full page screenshot including all the content of scrollable popup using selenium 在 selenium 中捕获具有粘性标题的完整网页截图 - Capture full webpage screenshot in selenium that has sticky header 如何使用 selenium java 进行彩色截图 - how to take color screenshot using selenium java 如何使用IP地址在Java中拍摄屏幕截图 - How to take Screenshot in Java using IP address 无法获取浏览器全屏截图 - Unable to take browser full page screenshot
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM