Selenium:如何使用firefox和python禁用图像加载?

时间:2015-07-05 19:44:29

标签: python firefox selenium selenium-webdriver

我已经阅读了类似的问题,其中一个应该是答案,但是当我尝试它时它只给出了部分解决方案。

我参考问题:Disable images in Selenium Python

我的问题是我尝试了这个解决方案并且一些图像没有出现,而是来自的图像:

<img href="www.xxx.png"> 

正在加载。 有没有办法告诉firefox / selenium不要得到它? 如果没有,有没有办法从我回来的dom元素中丢弃它,通过

self._browser.get(url)
content=self._browser.page_source

例如在dom树上做某种find replace?

浏览器配置与上一个问题的浏览器相同:

    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)

------------------------------------- CORRECTION --------- ----------------------------

我一直在挖掘,我学到的是那个,
如果我检查文本文档,我看到selenium / firefox组合,它没有带来图像,然后保留为链接。

但是当我这样做的时候:

self._browser.save_screenshot("info.png") 

我收到了一个包含所有img链接的24兆文件 谁能解释一下这件事呢? 感谢

2 个答案:

答案 0 :(得分:8)

您可以使用以下代码禁用图像:

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文件,测试完成后删除它。

答案 1 :(得分:2)

在最新的Firefox版本struct {char symbol; byte count;} input[] = { {'a', 2}, {'X' ,3} ,{'!', 1} }; const byte inputcount = sizeof(input)/sizeof(input[0]); // 3 in this test char expanded[20]; // will get the result void setup() { Serial.begin(9600); char* resultpos = expanded; for (auto& elem:input) { for (byte p = 0; p < elem.count; p++) { *resultpos++ = elem.symbol; } } *resultpos = 0; // to make it a printable char array Serial.println(expanded); // should give "aaXXX!" } void loop() {} 中,无法更改。要禁用图像,请切换到ChromDriver或按照建议的here使用替代范围。