捕获具有固定元素定位的元素的屏幕截图

时间:2017-12-13 21:10:33

标签: java jquery html css selenium

通过Selenium从网页中提取子图像没有问题。我首先检索整个页面的屏幕截图,然后使用元素坐标提取子图像。

Dimension elementDimension = webElement.getSize();
Point elementPoint = webElement.getLocation();

BufferedImage bufferedImageScreenshot = takeScreenshotByAShotRtrnBufferedImage(driver);



BufferedImage bufferedSubImage = bufferedImageScreenshot.getSubimage(elementPoint.x, elementPoint.y,
                elementDimension.width, elementDimension.height);

每次都很有效 - 除了我注意到某些网站在您查看(或向下滚动)网页时会有一些与您一起滚动的元素。发生这种情况时,我想要的元素会被滚动时与您一起移动的元素所覆盖。

例如,如果您转到https://www.amazon.com/gp/product/B00V7T1YRQ并尝试从网页中提取子元素:.//*[@id='aplus'],结果为:

http://imagizer.imageshack.us/a/img922/7974/VYFPUU.png

而不是预期的结果:

http://imageshack.com/a/img922/9517/AB8O2Q.png

如何在不被红色元素模糊的情况下获得预期的图像?

1 个答案:

答案 0 :(得分:0)

您可以删除该浮动元素。它有一个id = miniATF_feature_div。如果你执行下面的javascript,它应该从页面中删除它,直到你重新加载。

document.getElementById('miniATF_feature_div').remove()

如果您不知道如何做到这一点,那么有很多关于SO的教程和问题以及一些示例代码。

旁注: 当您只是查找ID时,没有理由使用XPath,例如.//*[@id='aplus']。只需使用By.id("aplus") ...它就更容易阅读,理解,支持更好,速度更快。