栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在安全性报告中(而不只是视口中)包括整个页面的屏幕截图?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在安全性报告中(而不只是视口中)包括整个页面的屏幕截图?

tl; dr:使用FirefoxDriver

我联系了W3C的David Burns。他非常乐于助人,他的回答为我澄清了很多。

首先,FirefoxDriver现在仍会拍摄整个页面的屏幕截图。大卫说:

另一方面,FirefoxDriver(以及在Marionette中,我们的W3C
webdriver实现)通过将文档转储到画布中并在Canvas上调用Firefox特定的API来获取屏幕截图来进行屏幕截图。由于我们转储了整个文档,因此我们可以进行全屏截图。但是,当我们开始将更多Servo代码添加到Firefox中以及访问屏幕截图的方式发生变化时,这种情况可能会改变。

因此,不幸的是,这种情况将来可能会改变,但是就目前而言,这很好(使用FFdriver时)。

他还解释了为何做出此选择,并引用了他关于网页渲染工作方式的演讲。后来在我们的谈话中,他还引用到分钟的讨论关于截图应该如何被捕获。

他的完整答案是:

你好

tl; dr; 全屏拍摄非常困难,因为并非所有浏览器都具有创建整个页面的屏幕截图的信息。长版:

在今年的Selenium
Conf上,我谈到了#isDisplayed有时会骗你的原因,原因与屏幕截图相同。为了使浏览器看起来像使网页尽可能快地加载,它们通过在CPU或GPU上进行计算来锻炼需要在视口中呈现的内容,然后呈现该内容。由于这种方法,这意味着浏览器会建立某些区域的显示列表,并创建要显示的“平铺”。它从视口开始,然后开始工作。现在,浏览器不会一次渲染整个页面,它将在滚动时上下左右准备好几次,并在滚动时计算剩余时间。

现在,ChromeDriver和Microsoft的EdgeDriver都从显示列表中进行屏幕截图,并具有仅向其提供视口的内部API。这是因为他们的参考测试(或供应商所知的reftest)仅在乎这一点。由于边缘情况,他们俩都不觉得为剩下的事情付出努力是不值得的。

另一方面,FirefoxDriver(以及在Marionette中,我们的W3C
webdriver实现)通过将文档转储到画布中并在Canvas上调用Firefox特定的API来获取屏幕截图来进行屏幕截图。由于我们转储了整个文档,因此我们可以进行全屏截图。但是,当我们开始将更多Servo代码添加到Firefox中以及访问屏幕截图的方式发生变化时,这种情况可能会改变。

因为我们只知道视口信息,所以这导致我们不得不将图像缝合在一起以获得完整的页面截图。ChromeDriver和IEDriver都这样做,并且两个开发团队都认为这是一个丑陋的hack,因为它并不总是正确的,而且他们也无能为力。

我希望这会有所帮助并能很好地解释它。在解释渲染和布局引擎如何在浏览器中工作时,建议观看我的演讲。

大卫



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/636112.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号