WebDriver中完成對特定的Web區域截圖辦法。本站提示廣大學習愛好者:(WebDriver中完成對特定的Web區域截圖辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是WebDriver中完成對特定的Web區域截圖辦法正文
用過 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(); // 創立全屏截圖。 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 的地位,詳見:盤算網頁中某個元素的地位。