如何获取特定网页元素的图像作为base64

问题描述 投票:0回答:2

我正在使用

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

driver.get_screenshot_as_base64()

但是如何在不下载的情况下获得

base64
而不是整个页面的屏幕,而只是页面上特定图像元素的屏幕?

附注比较两个图像的其他方法也是可以接受的:)

python selenium
2个回答
0
投票

另一个问题的答案解释了如何截取元素的屏幕截图这里。一旦掌握了这些,您应该能够对两个图像进行逐像素比较。您可以通过谷歌搜索并找到相关的代码示例。

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


0
投票

以下内容应该根据文档工作,但事实并非如此,并且这里有一个未解决的问题:https://github.com/SeleniumHQ/selenium/issues/912。与此同时,我建议https://stackoverflow.com/a/15870708/1415130

根据需要找到网页元素 - 请参阅文档 定位 元素

login_form = driver.find_element_by_id('loginForm')

然后屏幕抓取元素

screenshot = login_form.screenshot_as_base64()

为了比较屏幕截图,我使用 Pillow。

© www.soinside.com 2019 - 2024. All rights reserved.