如何从Firefox WebDriver获取图像细节?

6 投票
3 回答
1749 浏览
提问于 2025-04-15 16:15

我在用Firefox通过Webdriver渲染的页面上有一张图片,我可以找到它的对象(wd.find_element_by_xpath("id('main')/form/p[5]/img")),但是我该怎么获取它的内容呢?我想要的是要么是经过base64编码的内容,要么就是我电脑上硬盘上的位置。

附注:请不要建议我去获取src然后用外部工具去抓取。我想要的是我已经在浏览器里的那张图片。

3 个回答

0

fvictor的回答有帮助,但语法已经改变。在Firefox 60.9esr版本中,条目是以 about:cache-entry?storage=disk&context=&eid=&uri=https://example.com/images/img.png 的形式存储的,而且页面上没有 file on disk 的标签。不过在页面底部,你仍然可以找到十六进制转储。

1

我写了一个小脚本,可以从浏览器缓存中提取数据。你可以用它来提取缓存中的条目。可以在这个 链接 查看它。想了解怎么使用的话,可以看看 这篇文章

6

你可以通过访问一个特定的链接,从Firefox的缓存中提取已缓存的图片,链接大概是这样的:

about:cache-entry?client=HTTP&sb=1&key=http://your.server/image.png

打开这个链接后,你会看到一行标记为“磁盘上的文件”的内容,像这样:

file on disk: /home/fviktor/.mozilla/firefox/7jx6k3hx.default/Cache/CF7379D8d01

这个页面还会显示文件内容的十六进制转储。你可以从这个路径加载文件,或者解析这个十六进制转储。需要注意的是,如果是小文件,它们可能只会被缓存到内存中,这时候路径可能会显示为none。在这种情况下,你只能解析十六进制转储。

也许有办法在磁盘上有缓存文件的情况下隐藏十六进制转储,但我不太确定。

撰写回答