WebDriver中實現(xiàn)對特定的Web區(qū)域截圖方法
用過 WebDriver 的同學都知道,WebDriver 可以對瀏覽器中的頁面進行截圖。例如:
public byte[] takeScreenshot() throws IOException { TakesScreenshot takesScreenshot = (TakesScreenshot) driver; return takesScreenshot.getScreenshotAs(OutputType.BYTES); }
這樣產生的圖片是整個網頁。但有時候我們并不需要整個網頁,只需要某些特定的 WebElement,以避免一些干擾。
雖然 WebDriver 本身沒有提供這樣的 API,不過我們可以自己來,就是在全屏的截圖中再進行裁剪,如下:
public BufferedImage createElementImage(WebElement webElement) throws IOException { // 獲得webElement的位置和大小。 Point location = webElement.getLocation(); Dimension size = webElement.getSize(); // 創(chuàng)建全屏截圖。 BufferedImage originalImage = ImageIO.read(new ByteArrayInputStream(takeScreenshot())); // 截取webElement所在位置的子圖。 BufferedImage croppedImage = originalImage.getSubimage( location.getX(), localtion.getY(), size.getWidth(), size.getHeight()); return croppedImage; }
其中 ImageIO 和 BufferedImage 分別來自 javax.imageio 和 java.awt.image。
這種方法可以很好的削減截圖的大小,也避免了一些不確定因素(比如日期時間等),是測試中保存截圖的很好的方式。
注:如果測試的網頁中含有 iframe,則需要使用更復雜的方式計算 WebElement 的位置,詳見:計算網頁中某個元素的位置。
相關文章
SpringBoot中的@ControllerAdvice注解原理詳解
這篇文章主要介紹了SpringBoot中的@ControllerAdvice注解原理詳解,在SpringBoot應用程序啟動過程中,Spring會掃描所有的類,尋找?guī)в蠤ControllerAdvice注解的類這些方法會被添加到一個映射表中,以便后續(xù)處理異常時能找到對應的處理方法,需要的朋友可以參考下2024-01-01Mybatis中xml的動態(tài)sql實現(xiàn)示例
本文主要介紹了Mybatis中xml的動態(tài)sql實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06使用@ConfigurationProperties實現(xiàn)類型安全的配置過程
這篇文章主要介紹了使用@ConfigurationProperties實現(xiàn)類型安全的配置過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02