使用Selenium Web Dri进行页面拍摄

2024-06-11 13:48:58 发布

您现在位置:Python中文网/ 问答频道 /正文

关于Take a screenshot with Selenium WebDriver的问答包含了如何使用不同语言使用Selenium Web驱动程序拍摄屏幕快照的精彩描述。在

我用Python和C,以及一组不同的浏览器驱动程序来驱动我的Web驱动程序。在

例如,如果屏幕截图是用PhantomJS headless browser与Python一起拍摄的,我会得到整页快照。在

在C中,屏幕截图不是直接作为驱动程序方法提供的,所以需要一些代码(参见上面提到的问题和建议的C解决方案)。在

然而,C配方虽然在截屏时工作得很完美,但并不是我想要的。在

问题是C#recipe需要一个屏幕截图,而我要寻找的是如何拍摄一个完整的页面。屏幕截图应该是在屏幕上看到的,而且浏览器页面通常比屏幕大。在许多情况下,拍摄的照片应为页面快照。在

这个问题与引用的问题在细微的问题细节上不同,这使得结果不同。我想不同语言的页面拍摄解决方案在这里会很受欢迎。在


Tags: web语言屏幕seleniumwith驱动程序浏览器页面
1条回答
网友
1楼 · 发布于 2024-06-11 13:48:58

当前WebDriver API中的屏幕截图定义为整页屏幕截图。当你通过WebDriver截图时,你应该能看到整个页面,不管你使用什么语言(Python、C#、Java等)。话虽如此,仍有一些注意事项。在

对于IE驱动程序,如果您在64位Windows上运行,并使用32位IEDriverServer.exe,您将看到截图被截短到系统显示分辨率的最大大小,任何溢出都将作为图像的黑色部分。这是由于Windows钩子程序的局限性,Windows钩子程序用于允许IE驱动程序创建整页屏幕截图。更深入的细节可以在IE驱动程序的作者的blog post中找到。在

Chrome的驱动程序只提供screenshots of the visible view port。这是驱动程序的已知问题,已经有一段时间了,由于底层的bug in the Chrome browser itself而无法修复。在

Safari驱动程序的架构不允许完整的DOM截图。由于Safari浏览器提供的扩展点的性质有限,这种情况不太可能改变。在

最后,所有关于屏幕截图的讨论只与当前的WebDriver实现相关。创建WebDriver specW3C working group决定了屏幕截图只应该是visible view port,因此这种行为将来可能会发生变化,只允许查看端口的屏幕截图。在

相关问题 更多 >