如何使用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();
}
}输出

广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP