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