WebDriver中实现对特定的Web区域截图方法
用过WebDriver的同学都知道,WebDriver可以对浏览器中的页面进行截图。例如:
publicbyte[]takeScreenshot()throwsIOException{
TakesScreenshottakesScreenshot=(TakesScreenshot)driver;
returntakesScreenshot.getScreenshotAs(OutputType.BYTES);
}
这样产生的图片是整个网页。但有时候我们并不需要整个网页,只需要某些特定的WebElement,以避免一些干扰。
虽然WebDriver本身没有提供这样的API,不过我们可以自己来,就是在全屏的截图中再进行裁剪,如下:
publicBufferedImagecreateElementImage(WebElementwebElement)
throwsIOException{
//获得webElement的位置和大小。
Pointlocation=webElement.getLocation();
Dimensionsize=webElement.getSize();
//创建全屏截图。
BufferedImageoriginalImage=
ImageIO.read(newByteArrayInputStream(takeScreenshot()));
//截取webElement所在位置的子图。
BufferedImagecroppedImage=originalImage.getSubimage(
location.getX(),
localtion.getY(),
size.getWidth(),
size.getHeight());
returncroppedImage;
}
其中ImageIO和BufferedImage分别来自javax.imageio和java.awt.image。
这种方法可以很好的削减截图的大小,也避免了一些不确定因素(比如日期时间等),是测试中保存截图的很好的方式。
注:如果测试的网页中含有iframe,则需要使用更复杂的方式计算WebElement的位置,详见:计算网页中某个元素的位置。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下