Отключить стиль поиска в 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>") 
  • python selenium 3.0 - Firefox 47.0.1, установленный по умолчанию, не определен. (geckodriver)
  • Python Selenium Webdriver Не удалось запустить браузер браузера: разрешение отклонено
  • Selenium webdriver: Как найти ВСЕ атрибуты элемента?
  • Python Selenium - AttributeError: объект WebElement не имеет атрибута sendKeys
  • Как вводить числовые значения с помощью мобильной клавиатуры в приложении android в скрипте python с помощью Appium
  • Как проверить, присутствует ли какой-либо текст на веб-странице с использованием селена 2?
  • httplib.BadStatusLine: '' на Linux, но не Mac
  • Мониторинг протоколов протоколов JSON
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.