Отключить стиль поиска в Google с помощью Selenium FirefoxDriver

Следующий код отключает таблицы стилей и изображения на странице, загруженной веб-браузером Selenium Firefox:

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 … но интересно не с Google Search; только логотип Google исчезает, и его таблица стилей остается на месте.

Если вы попробуете следующую ссылку http://google.com/search?q=nelson+mandela , вы получите:

введите описание изображения здесь

В то время как ожидаемый результат должен выглядеть так (без таблицы стилей + без изображения):

введите описание изображения здесь

  • Что происходит?
  • Как это исправить?

2 Solutions collect form web for “Отключить стиль поиска в Google с помощью Selenium FirefoxDriver”

Логотип google формируется из css, где изображения встроены в HTML как данные (img src = "data: image / jpeg; base64, ….) код отключает загрузку удаленных изображений, а не из этих источников

  • permissions.default.stylesheet: отключить любое форматирование

  • permissions.default.image: отключить любое изображение и css background-image

если изображение встроено в страницу, поскольку кодировка base64 не блокируется этими разрешениями, поскольку является частью HTML-кода (см. http://en.wikipedia.org/wiki/Data_URI_scheme )

чтобы отключить больше форматирования, вы должны добавить:

  • firefox_profile.set_preference ("permissions.default.script", 2);
  • firefox_profile.set_preference ("javascript.enabled", False);

запустите следующий 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'); } 

Я тестировал это с помощью google, он работает. получил вышеупомянутый скрипт из этого кода расширения firefox

 driver = webdriver.Firefox(firefox_profile) driver.get('http://www.google.com/') driver.execute_script("<put the above javascript here as string>") 
  • Чтение скрытого значения в div с использованием Selenium Python binding
  • httplib.BadStatusLine: '' на Linux, но не Mac
  • Как скачать файл с помощью селена?
  • python selenium нажмите на кнопку
  • Загрузка файла в указанное место с помощью Selenium и python
  • Selenium Firefox webdrive, используя Python, прокручивая в div
  • Поиск элемента с явным ожиданием с использованием selenium webdriver в python
  • Selenium Python получает все дочерние элементы
  • Selenium webdriver: Как найти ВСЕ атрибуты элемента?
  • Selenium, выбор элемента внутри <span>
  • InvalidElementStateException при запуске Selenium Webdriver с PhantomJS
  • Python - лучший язык программирования в мире.