如何使用 Selenium 和 Java 获取完整网页的屏幕截图?

seleniumautomation testingtesting tools更新于 2026/2/12 12:07:17

每当我们在测试中遇到失败时,通常都会截取与预期结果有偏差的屏幕截图。因此,在创建错误报告时,附加屏幕截图被视为必不可少的步骤。

在自动化大量测试用例时,截取屏幕截图对于推断测试用例失败的原因至关重要,无论是开发团队还是测试团队。当他们调试故障时,他们会查看屏幕截图并确定故障是由于脚本问题还是应用程序缺陷造成的。

有时我们可能需要截取整个页面的屏幕截图,而不仅仅是屏幕的可见部分。常用浏览器的最新版本大多会截取可见区域。

为了解决这个问题,我们必须使用 AShot() 方法。它是 WebDriver 提供的一种获取全屏图像的方法,从 Selenium 3.x 版本开始可用。它具有以下用法 −

  • 全屏图像捕获。

  • 增强屏幕截图。

  • 屏幕截图比较。

在使用 AShot() 之前,我们必须下载以下 jar 文件并将其添加到我们的项目中 −

https://mvnrepository.com/artifact/ru.yandex.qatools.ashot/ashot

语法 −

Screenshot s=new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)).takeScreenshot(driver);
ImageIO.write(s.getImage(),"PNG",new File("<< file path>>"));

示例

代码实现。

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
import java.io.File;
import ru.yandex.qatools.ashot.AShot;
import ru.yandex.qatools.ashot.Screenshot;
import ru.yandex.qatools.ashot.shooting.ShootingStrategies;
import javax.imageio.ImageIO;
public class ScreenshotFull{
   public static void main(String[] args) {
      System.setProperty("webdriver.chrome.driver", "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      String url = "https://www.tutorialspoint.com/index.htm";
      driver.get(url);
      driver.manage().timeouts().implicitlyWait(12, TimeUnit.SECONDS);
      // 截取屏幕截图并存储图像
      Screenshot s=new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)).take       Screenshot(driver);
      ImageIO.write(s.getImage(),"PNG",new File("tutorialspoint.png"));
      driver.quit();
   }
}

输出


相关文章