我想知道watir-webdriver是否能够记录任何控制台错误的输出? 这相当于在浏览器中手动打开控制台并在页面加载时查看JS错误。我可以通过watir-webdriver和log / error来捕获它吗?
答案 0 :(得分:2)
如果它对某人有帮助 - 这个解决方案应该有效:
def check_console_log
console_log = @browser.driver.manage.logs.get(:browser)
if console_log != nil
raise(console_log)
end
end
答案 1 :(得分:1)
当将watir-webdriver与Cucumber结合使用时,错误(如果有的话)输出到格式良好且包含watir-webdriver错误的html文件。
这可以通过将以下标志添加到cucumber.yml中的默认配置文件来完成:
--color --format pretty --format html -o results.html
有关此文件的更多信息here.这里有一些background on Cucumber。
但是,如果您在控制台中仅使用watir-webdriver,则可以通过执行以下操作将watir-webdriver错误重定向到文件:
$ ruby your_watir_script.rb 2> watir_debug.log #watir outputs errors as stderr
在大多数情况下,如果watir中的某些内容失败(例如找不到元素),那么之后的所有内容也将失败,这就是为什么像Cucumber这样的东西在场景基础上推动自动化的原因。
答案 2 :(得分:1)
我的解决方案基于Kirikami's answer,不需要黄瓜。此方法仅打印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
的测试(例如超时,未找到元素等),您仍会收到watir-webdriver引发的任何错误消息。缺点:
print_js_errors
的前两行