Python 使用Selenium FirefoxDriver在Google搜索中禁用样式

Python 使用Selenium FirefoxDriver在Google搜索中禁用样式,python,firefox,selenium,selenium-webdriver,google-search,Python,Firefox,Selenium,Selenium Webdriver,Google Search,在加载Selenium Firefox webdriver的页面上禁用样式表和图像: from selenium import webdriver firefox_profile = webdriver.FirefoxProfile() firefox_profile.set_preference('permissions.default.stylesheet', 2) firefox_profile.set_preference('permissions.default.image', 2)

在加载Selenium Firefox webdriver的页面上禁用样式表和图像:

from selenium import webdriver

firefox_profile = webdriver.FirefoxProfile()
firefox_profile.set_preference('permissions.default.stylesheet', 2)
firefox_profile.set_preference('permissions.default.image', 2)

driver = webdriver.Firefox(firefox_profile)
driver.get('http://www.stackoverflow.com/')

driver.close()

它在stackoverflow.com、facebook.com、yahoo.com上运行良好。。。但有趣的是,谷歌搜索没有这样做;只有谷歌的标志消失了,它的样式表保持不变

如果您尝试使用以下链接
http://google.com/search?q=nelson+曼德拉
,您将获得:

然而,预期结果应该是这样的(没有样式表+没有图片):

  • 发生了什么事
  • 我怎么修理它

谷歌徽标来自css,其中图片作为数据嵌入HTML中(img src=“data:image/jpeg;base64,…)。该代码禁止加载远程图像,而不是此类源

  • permissions.default.stylesheet:禁用任何格式设置

  • permissions.default.image:禁用任何图像和css背景图像

如果图像以base64编码方式嵌入页面,则不会被这些权限阻止,因为它是HTML代码的一部分 (见附件)

要禁用更多格式,应添加:

  • firefox_profile.set_首选项(“permissions.default.script”,2)
  • firefox_profile.set_首选项(“javascript.enabled”,False)

通过selenium脚本执行器运行以下javascript

var queries = ['link[rel=stylesheet][href]', 'style'];
for (var i = 0; i < queries.length; i++) {
    var remove = document.querySelectorAll(queries[i]);
    for (var j = 0; j < remove.length; j++) {
        remove[j].outerHTML = '';
    }
}
var inline = document.querySelectorAll('*[style]');
for (var i = 0; i < inline.length; i++) {
    inline[i].removeAttribute('style');
}
var查询=['link[rel=stylesheet][href],'style'];
对于(var i=0;i
我已经用谷歌测试过了,它很有效。从这段代码中得到了上面的脚本

driver=webdriver.Firefox(Firefox\u配置文件)
司机,上车http://www.google.com/')
驱动程序。执行_脚本(“”)

我可以重现这个问题。非常有趣的问题。我不明白。请你解释一下好吗?我更新了我的答案,不确定是正确的方式,还是我必须添加一条评论。你说徽标消失了,因为它是CSS的一部分,已被禁用。那么,为什么我们仍然可以看到整个页面的布局和格式?这是一个问题out是由内联javascript生成的,try profile.set_preference(“javascript.enabled”,False);要禁用javascript引擎(而不是远程源)和布局页面,就像加载屏幕截图一样(几乎是纯文本)!google有什么问题?是关于嵌入的代码吗?(我的selenium版本=2.44.0浏览器=Mozilla/5.0(X11;Ubuntu;Linux x86_64;rv:33.0)Gecko/20100101 Firefox/33.0)当我看到你得到赏金时,我认为这段代码是有效的!我很感激。但我对selenium没有太多经验,我找不到任何方法来使用这段代码。你能告诉我如何使用它吗?”selenium脚本执行器”或将脚本放在何处@deepak@nazmussaif:已更新答案。希望对您有所帮助。
driver = webdriver.Firefox(firefox_profile)
driver.get('http://www.google.com/')
driver.execute_script("<put the above javascript here as string>")