【问题标题】:"TypeError: undefined is not a constructor" with Capybara (PhantomJS)Capybara(PhantomJS)的“TypeError:未定义不是构造函数”
【发布时间】:2017-07-05 00:28:23
【问题描述】:

我在 Capybara 功能测试中遇到 JavaScript 错误。 但是普通的chrome浏览器不会发生错误。 JavaScript 代码如下。

document.addEventListener('DOMContentLoaded', function(){
  var enable = function(){
    document.querySelectorAll('input').forEach(function(e){ e.disabled = false });
  }
  /* do something ..*/
  enable();
}

错误消息是TypeError: undefined is not a constructor (evaluating 'form.querySelectorAll('input').forEach(function(e){ e.disabled = false })')。 我认为这与forEach返回未定义有关。

【问题讨论】:

  • 不,forEach 确实并且应该返回 undefined - 并非所有 NodeList 的实现(querySelectorAll 返回的)都有 forEach 方法 - 请参阅 developer.mozilla.org/en/docs/Web/API/…
  • 我认为 PhantomJS 与 Chrome 几乎相同。但我知道它不正确。谢谢!
  • 类似[].forEach.call(form.querySelectorAll('input'), function(e){ e.disabled = false });
  • 谢谢。我会试试的!

标签: javascript ruby-on-rails ruby phantomjs capybara


【解决方案1】:

forEach 是一种 ES 5.1/6 方法,但 PhantomJS 的当前版本仅支持 ES 5。您需要填充 forEach 或使用 ES 5 兼容方法重写代码。

【讨论】:

  • 我明白了!我会尝试另一种方式或使用 polyfill。谢谢!
猜你喜欢
  • 2017-01-10
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-15
  • 2020-09-15
  • 2019-08-14
相关资源
最近更新 更多