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

輸出

更新於:2020年8月28日

687 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告