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


在测试过程中遇到失败时,通常需要在任何偏离预期结果的地方捕获屏幕截图。因此,附加屏幕截图以创建错误被认为是强制性步骤。

在自动化大量测试用例时,捕获屏幕截图对于推断测试用例失败的原因至关重要,这对开发和测试团队都有帮助。当他们调试失败时,可以通过查看屏幕截图并得出结论,判断失败是由于脚本问题还是应用程序中的缺陷。

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

为了解决这个问题,我们必须使用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://tutorialspoint.com/index.htm";
      driver.get(url);
      driver.manage().timeouts().implicitlyWait(12, TimeUnit.SECONDS);
      // capture screenshot and store the image
      Screenshot s=new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)).take       Screenshot(driver);
      ImageIO.write(s.getImage(),"PNG",new File("tutorialspoint.png"));
      driver.quit();
   }
}

输出

更新于:2020年8月28日

687 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告