Может ли watir-webdriver регистрировать ошибки консоли?

Мне интересно, если watir-webdriver как возможность регистрировать вывод любых ошибок консоли? Это было бы эквивалентно ручному открытию консоли в браузере и наблюдению за ошибками JS при загрузке страницы. Могу ли я захватить это через watir-webdriver и log/error?

Ответы

Ответ 1

Если это будет полезно кому-то - это решение должно работать:

def check_console_log
    console_log = @browser.driver.manage.logs.get(:browser)
    if console_log != nil
      raise(console_log)
    end
end

Ответ 2

При использовании watir-webdriver в сочетании с Cucumber ошибки, если они есть, выводятся в файл html, который очень хорошо отформатирован и содержит ошибки watir-webdriver.

Это можно сделать, добавив следующие флагов в свой профиль по умолчанию в cucumber.yml:

--color --format pretty --format html -o results.html Подробнее об этом файле здесь. Здесь некоторые фон на огурце.

Однако, если вы используете только watir-webdriver с консоли, вы можете перенаправить ошибки watir-webdriver в файл, выполнив следующие действия:

$ ruby your_watir_script.rb 2> watir_debug.log #watir outputs errors as stderr

В большинстве случаев, если что-то в watir терпит неудачу (например, элемент не может быть найден), тогда все после этого также потерпит неудачу, поэтому его полезно иметь что-то вроде Cucumber для автоматизации вашей работы на основе сценария.

Ответ 3

Я основывал свое решение на ответе Кириками, никакого огурца не нужно. Этот подход печатает только консоль javascript Errors (без предупреждений, информации, журналов или отладки).

def print_js_errors
  log = @browser.driver.manage.logs.get(:browser)
  errors = log.select{ |entry| entry.level.eql? 'SEVERE' }
  if errors.count > 0
    javascript_errors = errors.map(&:message).join("\n")
    raise javascript_errors
  end
end

Затем, если вы используете rspec, вы можете сделать это:

RSpec.configure do |config|
  config.after :each do
    print_js_errors
  end
end

Плюсы:

  • Вы все еще получаете стандартный вывод RSpec для тестов, что Pass
  • Вы по-прежнему получаете сообщения об ошибках, выданные watir-webdriver для тестов, которые Fail (например, время ожидания, элемент не найден и т.д.)
  • Когда возникает ошибка javascript, она добавляется к выходным результатам результатов RSpec

Минусы:

  • Первые две строки print_js_errors выполняются после каждого теста