Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Cucumber/Capybara测试执行JavaScript_Javascript_Ruby_Cucumber_Capybara - Fatal编程技术网

使用Cucumber/Capybara测试执行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) (我是否通过正确指定路径来正确添加扩展?使用从根开始?)

在cucumber测试中,我希望在after钩子中执行一些JavaScript,我希望做的是捕获任何JavaScript错误并在控制台中输出错误

目前我遇到的问题是使用方法
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