You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium WebDriver滚动截图问题:如何生成整页单张截图

解决Selenium WebDriver捕获整个页面截图的问题

我明白你遇到的痛点——默认的Selenium截图只能抓取页面可见区域,试过ashot库也没搞定,想要一张完整的长页面单张截图对吧?下面给你几个经过验证的可行方案,应该能解决你的问题:


方案1:用Selenium 4原生全页面截图功能(首推)

Selenium 4给Chrome、Firefox、Edge这些主流浏览器都提供了原生的全页面截图API,不需要额外依赖第三方库,稳定性还高。

Chrome示例代码

import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.io.FileHandler;
import org.openqa.selenium.remote.RemoteWebDriver;

import java.io.File;
import java.io.IOException;

public class FullPageScreenshot {
    public static void main(String[] args) throws IOException {
        ChromeOptions options = new ChromeOptions();
        RemoteWebDriver driver = new ChromeDriver(options);
        
        driver.get("你的目标页面URL");
        
        // 捕获全页面截图
        File fullPageScreenshot = driver.getFullPageScreenshotAs(org.openqa.selenium.OutputType.FILE);
        // 保存到本地指定路径
        FileHandler.copy(fullPageScreenshot, new File("full_page_screenshot.png"));
        
        driver.quit();
    }
}

Firefox示例代码

import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.io.FileHandler;
import org.openqa.selenium.remote.RemoteWebDriver;

import java.io.File;
import java.io.IOException;

public class FirefoxFullPageScreenshot {
    public static void main(String[] args) throws IOException {
        FirefoxOptions options = new FirefoxOptions();
        RemoteWebDriver driver = new FirefoxDriver(options);
        
        driver.get("你的目标页面URL");
        
        File fullPageScreenshot = driver.getFullPageScreenshotAs(org.openqa.selenium.OutputType.FILE);
        FileHandler.copy(fullPageScreenshot, new File("firefox_full_page.png"));
        
        driver.quit();
    }
}

注意:要确保你的Selenium版本是4.x以上,浏览器驱动也要和浏览器版本完全匹配,不然可能会出现功能失效的情况。


方案2:优化Ashot库的使用方式

你之前用ashot没成功,大概率是配置没到位。试试下面的优化版本,它能自动滚动页面并拼接截图:

import ru.yandex.qatools.ashot.AShot;
import ru.yandex.qatools.ashot.Screenshot;
import ru.yandex.qatools.ashot.shooting.ShootingStrategies;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;

public class AshotFullPageScreenshot {
    public static void main(String[] args) throws IOException {
        WebDriver driver = new ChromeDriver();
        driver.get("你的目标页面URL");
        
        // 使用整页滚动拼接策略,设置1000ms滚动等待(避免页面动态内容加载不及时)
        Screenshot screenshot = new AShot()
                .shootingStrategy(ShootingStrategies.viewportPasting(1000))
                .takeScreenshot(driver);
        
        ImageIO.write(screenshot.getImage(), "PNG", new File("ashot_full_page.png"));
        
        driver.quit();
    }
}

另外建议把ashot版本更新到更稳定的1.5.4,替换你原来的依赖:

<dependency>
    <groupId>ru.yandex.qatools.ashot</groupId>
    <artifactId>ashot</artifactId>
    <version>1.5.4</version>
</dependency>

如果页面有固定定位的元素(比如顶部导航栏),可以用addIgnoredElement排除它,避免重复截图:

Screenshot screenshot = new AShot()
        .addIgnoredElement(org.openqa.selenium.By.cssSelector("你的固定导航栏选择器"))
        .shootingStrategy(ShootingStrategies.viewportPasting(1000))
        .takeScreenshot(driver);

方案3:Edge浏览器的原生截图实现

如果你用的是Edge,用法和Chrome类似,直接调用Selenium 4的原生API即可:

import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions;
import org.openqa.selenium.io.FileHandler;
import org.openqa.selenium.remote.RemoteWebDriver;

import java.io.File;
import java.io.IOException;

public class EdgeFullPageScreenshot {
    public static void main(String[] args) throws IOException {
        EdgeOptions options = new EdgeOptions();
        RemoteWebDriver driver = new EdgeDriver(options);
        
        driver.get("你的目标页面URL");
        
        File fullPageScreenshot = driver.getFullPageScreenshotAs(org.openqa.selenium.OutputType.FILE);
        FileHandler.copy(fullPageScreenshot, new File("edge_full_page.png"));
        
        driver.quit();
    }
}

内容的提问来源于stack exchange,提问作者Stéphane GRILLON

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:14:51