Firefox + Selenium - Отключение форматирования JSON
Table Of Content
Firefox вернул себе свою мощь благодаря двум основным причинам. Во-первых, из-за самого браузера и, во-вторых, с помощью его конкурирующего браузера Chrome. Прежде всего, Firefox решил, что достаточно и решил перестроиться с нуля с учетом производительности - Проект Quantum. Во-вторых, Google принял стратегическое решение (или, скорее, ужасное) молочить время пользователей и не соблюдать обещание, которое они дали при запуске Chrome - ограничить возможности сторонних расширений (в частности, блокировщиков рекламы) под ложным предлогом конфиденциальности.
В любом случае, для меня лично это было фантастическим решением - наконец-то избавиться от Google Chrome навсегда.
Не уходя далеко, целью этой статьи является передача знаний пользователям Selenium Webdriver, которые хотят избежать нежелательных побочных эффектов отображения Firefox отформатированной версии JSON. Это особенно проблематично при запуске автоматизированных тестов или при парсинге веб-сайта. Исходный код страницы содержит теги html, хотя сам эндпоинт был JSON.
Чтобы избежать этого, все, что нам нужно сделать, это вызвать метод add_preference
на классе Options, отключив JSON View инструментов разработчика.
Приведен ниже рабочий код.
def self.fetch(url)
options = Selenium::WebDriver::Firefox::Options
**options.add_preference('devtools.jsonview.enabled', false)**
browser = Selenium::WebDriver.for :firefox, options: options
browser.manage.timeouts.page_load = 45
browser.navigate.to url
json_text = Nokogiri::HTML(browser.page_source, nil, Encoding::UTF_8.to_s).css('pre').first.text
return json_text if JSON.parse(json_text)
rescue => e
Honeybadger.notify(e)
ensure
browser.close
end
Вот и все! Это гарантирует, что метод возвращает чистый текст JSON, а не HTML.
Francium Tech_ - это технологическая компания, специализирующаяся на создании программного обеспечения высокого качества масштаба с экстремальной скоростью. Числа и объем данных нас не пугают. Если у вас есть какие-либо требования или вы хотите бесплатную проверку состояния ваших систем или архитектуры, не стесняйтесь написать на contact@francium.tech, мы свяжемся с вами!_