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 测试?

selenium怎么使用firefox

如何隐藏 Firefox 窗口(Selenium WebDriver)?

python+selenium+Firefox+pycharm版本匹配