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

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

从我所看到的,它似乎应该是完全可能的,但由于某种原因截图命令总是努力采取完整的文档截图。 事实上,IE驱动程序需要多个视口镜头,然后将它们拼接在一起。

我正在使用Ruby webdriver,我无论如何都看不到只是视口的截图。 可能吗?

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

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

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

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

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

AFAIK现在Chrome-和IEDriver都只捕获视口的截图,而FFDriver捕获整页截图(FF将在未来改变它)。 另见我对这个问题的回答 。