Selenium:如何使用 firefox 和 python 禁用图像加载?
Posted
技术标签:
【中文标题】Selenium:如何使用 firefox 和 python 禁用图像加载?【英文标题】:Selenium: How to disable image loading with firefox and python? 【发布时间】:2015-09-22 22:02:59 【问题描述】:我读过类似的问题,一个应该是答案,但是当我尝试它时,它只给出了部分解决方案。 我参考这个问题:Disable images in Selenium Python
我的问题是我尝试了解决方案,有些图像没有出现,但图像来自:
<img href="www.xxx.png">
正在加载。 有没有办法告诉 firefox/selenium 不要得到它? 如果没有,有没有办法从我返回的 dom 元素中丢弃它,通过:
self._browser.get(url)
content=self._browser.page_source
例如通过在 dom 树上进行某种查找替换? 浏览器配置和上一个问题的浏览器一样:
firefox_profile = webdriver.FirefoxProfile()
# Disable CSS
firefox_profile.set_preference('permissions.default.stylesheet', 2)
# Disable images
firefox_profile.set_preference('permissions.default.image', 2)
# Disable Flash
firefox_profile.set_preference('dom.ipc.plugins.enabled.libflashplayer.so', 'false')
# Set the modified profile while creating the browser object
self._browser = webdriver.Firefox(firefox_profile=firefox_profile)
更新:
我继续挖掘,我学到的是,如果我检查 selenium/firefox 组合的文本文档,我看到了,它没有带来图像并将它们保留为链接。 但是当我这样做时:
self._browser.save_screenshot("info.png")
我有一个 24 兆的文件,其中加载了所有 img 链接。 谁能给我解释一下这个问题? 谢谢!
【问题讨论】:
【参考方案1】:在最新的 Firefox 版本中 permissions.default.image
无法更改。要禁用图像,请切换到 ChromDriver 或使用建议的替代扩展 here。
【讨论】:
【参考方案2】:您可以使用以下代码禁用图像:
firefox_profile = webdriver.FirefoxProfile()
firefox_profile.set_preference('permissions.default.image', 2)
firefox_profile.set_preference('dom.ipc.plugins.enabled.libflashplayer.so', 'false')
driver = webdriver.Firefox(firefox_profile=firefox_profile)
如果您需要阻止某些特定的网址...嗯... 我认为您需要添加字符串:
127.0.0.1 www.someSpecificUrl.com
测试开始前到hosts文件,测试结束后删除。
【讨论】:
有效吗?我认为,它需要 False 而不是字符串“false”。它应该是布尔值。请建议。 这取决于您的语言。但可能两种方式都行得通:当您将其作为 bool 发送时,以及当您将其作为字符串发送时。但是,是的,这必须有效。 为我工作。 dropbox.com/s/o9wlmycti3yjg99/… @mrtipale,是的,它需要是布尔值。以上是关于Selenium:如何使用 firefox 和 python 禁用图像加载?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Selenium 的无头 Firefox 中使用 --screenshot 和 python
如何使用 Selenium for Firefox 和 Chrome 禁用推送通知?
如何使用 Windows 身份验证和 Firefox 运行 Selenium NUnit 测试?