Selenium Webdriver仅截取视口的屏幕截图

时间:2015-08-05 13:27:17

标签: ruby selenium selenium-webdriver selenium-chromedriver

我只需要当前视口的截图,特别是尊重滚动位置。基本上是当前Chrome驱动程序的功能。

从我所读过的内容看来,这应该是完全可能的,但由于某种原因,屏幕截图命令总是力求拍摄完整的文档截图。事实上,IE驱动程序需要多个视口镜头,然后将它们拼接在一起。

我使用的是Ruby webdriver,但我无法看到仅截取视口的屏幕截图。有可能吗?

2 个答案:

答案 0 :(得分:4)

在处理WebDriver时,有两个相互竞争的“屏幕截图”定义。第一个是开源项目使用的定义,其中屏幕截图被定义为加载页面的整个DOM的图像。在这种情况下,自2010年以来,IE驱动程序和Firefox驱动程序都正在执行项目定义的正确操作.WebDriver的Chrome实现在返回仅可见视图端口的图像时不正确。

另一方面,W3C WebDriver specification将屏幕截图定义为仅当前视图端口。这与当前的开源项目的驱动程序实现(IE和Firefox)不一致,并且可能会在未来发生变化。一旦规范达到“候选推荐”状态,这些驱动程序可能会更新。

另外,应该注意的是IE驱动程序 绝不 使用“滚动 - 拼接”方法来创建其屏幕截图。 调整浏览器窗口的大小,足以显示整个DOM,如请求屏幕截图时计算的那样,并拍摄该图像。但请注意,IE 10和11在生成这些完整DOM屏幕截图时存在问题,具体取决于bit-ness of your operating system以及您正在使用的IEDriverServer可执行文件。

目前,您需要使用WebDriver外部的工具来获取IE和Firefox的仅限视频端口的屏幕​​截图。

答案 1 :(得分:1)

这是一个经常变化的问题..

AFAIK现在Chrome-和IEDriver都只捕获视口的截图,而FFDriver捕获整页截图(FF将来会改变这一点)。另请参阅my answer to this question