WebDriver中實(shí)現(xiàn)對(duì)特定的Web區(qū)域截圖方法
用過 WebDriver 的同學(xué)都知道,WebDriver 可以對(duì)瀏覽器中的頁(yè)面進(jìn)行截圖。例如:
public byte[] takeScreenshot() throws IOException { TakesScreenshot takesScreenshot = (TakesScreenshot) driver; return takesScreenshot.getScreenshotAs(OutputType.BYTES); }
這樣產(chǎn)生的圖片是整個(gè)網(wǎng)頁(yè)。但有時(shí)候我們并不需要整個(gè)網(wǎng)頁(yè),只需要某些特定的 WebElement,以避免一些干擾。
雖然 WebDriver 本身沒有提供這樣的 API,不過我們可以自己來,就是在全屏的截圖中再進(jìn)行裁剪,如下:
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。
這種方法可以很好的削減截圖的大小,也避免了一些不確定因素(比如日期時(shí)間等),是測(cè)試中保存截圖的很好的方式。
注:如果測(cè)試的網(wǎng)頁(yè)中含有 iframe,則需要使用更復(fù)雜的方式計(jì)算 WebElement 的位置,詳見:計(jì)算網(wǎng)頁(yè)中某個(gè)元素的位置。
相關(guān)文章
使用SpringMVC響應(yīng)json格式返回的結(jié)果類型
這篇文章主要介紹了使用SpringMVC響應(yīng)json格式返回的結(jié)果類型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Java策略模式的簡(jiǎn)單應(yīng)用實(shí)現(xiàn)方法
這篇文章主要介紹了Java策略模式的簡(jiǎn)單應(yīng)用實(shí)現(xiàn)方法,需要的朋友可以參考下2014-02-02SpringBoot中的@ControllerAdvice注解原理詳解
這篇文章主要介紹了SpringBoot中的@ControllerAdvice注解原理詳解,在SpringBoot應(yīng)用程序啟動(dòng)過程中,Spring會(huì)掃描所有的類,尋找?guī)в蠤ControllerAdvice注解的類這些方法會(huì)被添加到一個(gè)映射表中,以便后續(xù)處理異常時(shí)能找到對(duì)應(yīng)的處理方法,需要的朋友可以參考下2024-01-01Mybatis中xml的動(dòng)態(tài)sql實(shí)現(xiàn)示例
本文主要介紹了Mybatis中xml的動(dòng)態(tài)sql實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06使用@ConfigurationProperties實(shí)現(xiàn)類型安全的配置過程
這篇文章主要介紹了使用@ConfigurationProperties實(shí)現(xiàn)類型安全的配置過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Java消息隊(duì)列JMS實(shí)現(xiàn)原理解析
這篇文章主要介紹了Java消息隊(duì)列JMS實(shí)現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03java實(shí)現(xiàn)簡(jiǎn)易的五子棋游戲
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)易的五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06