CoderCastrov logo
CoderCastrov
Руби

Firefox + Selenium - Отключение форматирования JSON

Firefox + Selenium - Отключение форматирования JSON
просмотров
1 мин чтение
#Руби
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, мы свяжемся с вами!_