Как включить ведение журнала ChromeDriver в Ruby Capybara с помощью Selenium? - PullRequest
1 голос
/ 26 сентября 2019

Я попытался зарегистрировать драйвер Selenium Chrome в Ruby Capybara.Но, к сожалению, я не нашел никакой информации о включении регистрации.Я использовал опции с добавленным perfLoggingPrefs: {enableNetwork: true} и столкнулся с проблемой, что я должен включить ведение журнала.Кто-нибудь знает, как включить ведение журнала для ChromeDriver в Ruby / Capybara?Итак, вот мой код:

    Capybara.register_driver(:selenium_mobile) do |app|
     options = Selenium::WebDriver::Chrome::Options.new
     options.add_emulation(device_name: 'iPhone X')
     options.add_option(:perfLoggingPrefs, {enableNetwork: true})
     p "Default Selenium driver is used"
     cps = Selenium::WebDriver::Remote::Capabilities.chrome(
       loggingPrefs: {browser: 'ALL'},
       perfLoggingPrefs: {enableNetwork: true})

      Capybara::Selenium::Driver.new(app, browser: :chrome, 
    desired_capabilities: cps, options: 
       options)
      end
    end

Кроме того, я попытался ввести аргументы командной строки, такие как

      options.add_argument('verbose')
      options.add_argument('log-path=./tmp/chromedriver.log')

В любом случае я получил проблему:

Селен:: WebDriver :: Ошибка :: InvalidArgumentError: недопустимый аргумент: недопустимая запись 0 в 'firstMatch' из недопустимого аргумента: указано perfLoggingPrefs, но ведение журнала производительности не включено

Я прочитал, что ведение журнала ChromeDriver можетбыть включенным LoggingPreferences, но я не нашел упоминаний об этом для Ruby.

Кто-нибудь знает, как включить регистрацию для ChromeDriver в Ruby / Capybara при регистрации драйвера Selenium?

1 Ответ

0 голосов
/ 30 сентября 2019

Вы уже добавили настройки ведения журнала.

Кроме того, вы можете создать метод для хранения журналов там, где вам нужно.Вот метод, который я использую для записи логов в нужной папке.Вы можете вызвать этот метод после хуков.Кроме того, вы можете сохранить их как артефакты, если хотите видеть их в любом приложении CI / CD

 def capture_browser_logs
  errors = Capybara.page.driver.browser.manage.logs.get(:browser)
                   .select { |e| e.level == "SEVERE" && e.message.present? }
                   .map(&:message)
                   .to_a
  return if errors.none?
  message = errors.join("\n\n")

  # writes console errors to a log file
  log_file_path = Rails.root.join("tmp", "smoke_tests", "console_logs", "js_errors.log")
  FileUtils.mkdir_p(log_file_path.dirname) unless File.directory?(log_file_path.dirname)

  logging_destination = if ENV["RAILS_LOG_TO_STDOUT"].present? && ENV["RAILS_LOG_TO_STDOUT"].to_s == "true"
                          STDOUT
                        else
                          log_file_path
                        end

  logger = Logger.new(logging_destination)
  logger.error(message)
end
...