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将在未来改变它)。 另见我对这个问题的回答 。