一尘不染

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

selenium

我只需要当前视口的屏幕截图,尤其要注意滚动位置。基本上是当前Chrome驱动程序的功能。

从我所阅读的内容看来,这应该是完全可能的,但是由于某些原因,screenshot命令始终努力获取完整的文档截图。实际上,IE驱动程序会拍摄多个视口镜头,然后将它们缝合在一起。

我使用的是Ruby Webdriver,无论如何我都看不到仅截取视口的屏幕截图。可能吗?


阅读 327

收藏
2020-06-26

共1个答案

一尘不染

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

W3C规范的webdriver,在另一方面,定义的屏幕截图是只在当前视口的。这与当前的开放源代码项目的驱动程序实现(IE和Firefox)不一致,并且可以预期在将来发生变化。规范达到“候选推荐”状态后,可能会更新那些驱动程序。

顺便说一句 ,应该注意的是,IE驱动程序 绝不 使用“滚动拼接”方法来创建其屏幕截图。它 确实
将浏览器窗口调整为足够大的大小,以显示整个DOM(如请求屏幕快照时所计算的那样),并拍摄图像。但是,请注意,根据操作系统和所用IEDriverServer可执行文件的位数,生成这些完整DOM屏幕截图时,IE 10和11存在问题。

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

2020-06-26