Ответ 1
Если это будет полезно кому-то - это решение должно работать:
def check_console_log
console_log = @browser.driver.manage.logs.get(:browser)
if console_log != nil
raise(console_log)
end
end
Мне интересно, если watir-webdriver как возможность регистрировать вывод любых ошибок консоли? Это было бы эквивалентно ручному открытию консоли в браузере и наблюдению за ошибками JS при загрузке страницы. Могу ли я захватить это через watir-webdriver и log/error?
Если это будет полезно кому-то - это решение должно работать:
def check_console_log
console_log = @browser.driver.manage.logs.get(:browser)
if console_log != nil
raise(console_log)
end
end
При использовании 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 для автоматизации вашей работы на основе сценария.
Я основывал свое решение на ответе Кириками, никакого огурца не нужно. Этот подход печатает только консоль 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
Плюсы:
Pass
Fail
(например, время ожидания, элемент не найден и т.д.)Минусы:
print_js_errors
выполняются после каждого теста