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