如何使用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.tw/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