Python 如何将特定web元素的映像获取为base64

Python 如何将特定web元素的映像获取为base64,python,selenium,Python,Selenium,我正在使用SeleniumWeb驱动程序和Python为web应用程序测试创建自动化脚本。我需要实现验证,将两个编码的png文件字符串作为base64进行比较:保存的基本图像和同一web元素页面上的当前图像。Selenium中有一个方法允许将页面截图作为base64对象获取 driver.get_屏幕截图_as_base64 但如何在不下载的情况下获得base64屏幕,而不是整个页面,而是页面上特定图像元素的屏幕 另外,比较两幅图像的其他方法也是可以接受的:还有一个问题的答案,解释了如何拍摄元素

我正在使用SeleniumWeb驱动程序和Python为web应用程序测试创建自动化脚本。我需要实现验证,将两个编码的png文件字符串作为base64进行比较:保存的基本图像和同一web元素页面上的当前图像。Selenium中有一个方法允许将页面截图作为base64对象获取

driver.get_屏幕截图_as_base64

但如何在不下载的情况下获得base64屏幕,而不是整个页面,而是页面上特定图像元素的屏幕


另外,比较两幅图像的其他方法也是可以接受的:

还有一个问题的答案,解释了如何拍摄元素的屏幕截图。一旦你有了它,你应该能够对两幅图像进行逐像素的比较。你可以在谷歌上搜索并找到相关的代码示例


我在base64图像上看不到很多信息。这似乎是比较两幅图像的一种非常酷、简单的方法,因为您只需进行快速字符串比较,但selenium似乎不支持在base64中拍摄元素的屏幕截图。您可能需要做一些工作来拍摄屏幕截图,将其和参考图像转换为base64,但这可能比仅仅使用一个库或比较两个之前已经做了很多次并且遍布网络的图像要复杂得多。

以下内容应该根据文档进行操作,但不是,这里还有一个悬而未决的问题:。同时,我建议

找到您想要的网页元素-参见文档

然后


为了比较截图,我使用了枕头。

这不适用于Firefox。你用什么浏览器?Edge?抱歉,你是对的,这是一个开放的问题:在PhantomJS上也不起作用。对于phantom抛出WebDriverException:Message:无效的命令方法,对于Firefox抛出WebDriverException:Message:无法识别的命令。解决方法是使用Javascript从图像创建画布,然后稍后将其保存为base64。
login_form = driver.find_element_by_id('loginForm')
screenshot = login_form.screenshot_as_base64()