当前位置: 首页 > 面试题库 >

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

裘丰
2023-03-14
问题内容

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

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

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


问题答案:

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

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

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

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



 类似资料:
  • 我只需要当前视口的屏幕截图,特别是滚动位置。基本上是当前Chrome驱动程序所做的。 据我所知,这似乎是完全可能的,但出于某种原因,屏幕截图命令总是努力拍摄完整的文档屏幕截图。事实上,IE驱动程序拍摄多个视口快照,然后将它们缝合在一起。 我使用的是Ruby webdriver,但我看不到任何东西,只能截取视口的屏幕。可能吗?

  • 我在浏览器栈上使用Selenium网络驱动程序自动测试,当我在Firefox和IE上截图时,它会截图整个页面。但是由于我的页面包含一个很长的列表——屏幕截图太长了,因此它不是一个清晰的图像,很难看出页面的行为是否正确。我需要它像Chrome一样精确:仅显示视口宽度和高度的屏幕截图。在Firefox和IE上可能吗? 我使用的代码:

  • 问题内容: 我有一个名为overView的UIView: 我只想截取此视图的屏幕截图,而不是整个屏幕。并制作尺寸截图: 这是我的代码: 屏幕截图具有所需的大小,但是它需要整个视图的屏幕截图,而不仅仅是“ overView”。 问题答案: 要绘制一个视图,只需使用以下命令: 如果您想多次使用它,可能扩展可以完成这项工作: // Swift4 //旧的Swift 要解释这些参数的作用: UIGraph

  • 我试图根据用户输入的坐标捕捉区域截图。基本上,用户在屏幕上点击得到x,y坐标,然后在其他地方点击另一对x,y坐标,然后将其放入一个矩形中,并使用机器人库创建屏幕截图。 我有的问题是,我得到了随机截图,这不是用户输入的坐标,我怎么能考虑包括0的坐标,因为矩形值必须超过1。 以下是我迄今为止的代码:

  • 问题内容: 我有这个代码。但是我需要对所有项进行屏幕截图,但是如果我的的项多于屏幕上的可见项,则当这些项大于可见的rect时,不会捕获此代码。 如何正确捕获我的ListView? 我创建的新工作代码 问题答案: 工作代码:

  • 问题内容: 我正在尝试使用Linux上的python脚本拍摄当前窗口的屏幕截图。 我目前有一个脚本,可以截取整个屏幕的屏幕截图: 但是一个只想拥有选定的窗口。我知道问题出在grabWindow。但我不知道如何解决。 问题答案: 只需更换 与您要为其截屏的小部件一起使用。