使用Cucumber/Capybara测试执行JavaScript
在cucumber测试中,我希望在after钩子中执行一些JavaScript,我希望做的是捕获任何JavaScript错误并在控制台中输出错误 目前我遇到的问题是使用方法使用Cucumber/Capybara测试执行JavaScript,javascript,ruby,cucumber,capybara,Javascript,Ruby,Cucumber,Capybara,在cucumber测试中,我希望在after钩子中执行一些JavaScript,我希望做的是捕获任何JavaScript错误并在控制台中输出错误 目前我遇到的问题是使用方法execute\u script运行一段JavaScript 我得到了错误 undefined method `execute_script' for #<Cucumber::Ast::Scenario:0x5878608> (NoMethodError) (我是否通过正确指定路径来正确添加扩展?使用从根开始?)
execute\u script
运行一段JavaScript
我得到了错误
undefined method `execute_script' for #<Cucumber::Ast::Scenario:0x5878608> (NoMethodError)
(我是否通过正确指定路径来正确添加扩展?使用
从根开始?)
我的后钩子
After do |page|
errors = page.execute_script("return window.JSErrorCollector_errors.pump()")
if errors.any?
STDOUT.puts '-------------------------------------------------------------'
STDOUT.puts "Found #{errors.length} javascript #{pluralize(errors.length, 'error')}"
STDOUT.puts '-------------------------------------------------------------'
errors.each do |error|
puts " #{error["errorMessage"]} (#{error["sourceName"]}:#{error["lineNumber"]})"
end
raise "Javascript #{pluralize(errors.length, 'error')} detected, see above"
end
end
我在这里做的任何事情看起来都不正确,或者有人以不同的方式做了吗?在
将场景
对象(刚刚运行的场景)传递到块后,您刚好命名了变量页面
。此变量通常被称为方案
。undefined_方法
行显示错误消息中的NoMethodError
来自哪个对象类型(
)
您应该能够像在任何其他步骤中一样,在之后的块中执行代码
After do |scenario|
errors = page.execute_script("return window.JSErrorCollector_errors.pump()")
if errors.any?
STDOUT.puts '-------------------------------------------------------------'
STDOUT.puts "Found #{errors.length} javascript #{pluralize(errors.length, 'error')}"
STDOUT.puts '-------------------------------------------------------------'
errors.each do |error|
puts " #{error["errorMessage"]} (#{error["sourceName"]}:#{error["lineNumber"]})"
end
raise "Javascript #{pluralize(errors.length, 'error')} detected, see above"
end
end
After do |scenario|
errors = page.execute_script("return window.JSErrorCollector_errors.pump()")
if errors.any?
STDOUT.puts '-------------------------------------------------------------'
STDOUT.puts "Found #{errors.length} javascript #{pluralize(errors.length, 'error')}"
STDOUT.puts '-------------------------------------------------------------'
errors.each do |error|
puts " #{error["errorMessage"]} (#{error["sourceName"]}:#{error["lineNumber"]})"
end
raise "Javascript #{pluralize(errors.length, 'error')} detected, see above"
end
end