在Jasmine-PhantomJS测试中调用html元素上的click()函数



我用Karma和PhantomJS运行我的测试:

信息 [业力]: 业力 v0.12.32 服务器在 http://localhost:9876/启动 信息 [启动器]: 启动浏览器 PhantomJS 信息 [PhantomJS 1.9.8 (Windows 7)]: Connected on socket kVOvdbbgtIeUQuV8AAAA wit

在该测试中,我想单击段落(p)以获取我的事件反馈:

// given 
var element = appendToBody("<p id='hello-p'>Hello Hello World!</p>");
element.addEventListener('click', function(event) {
    console.log("1");
});
// when
var p = document.getElementById("hello-p");
console.log(p);
// LOG: <p id="hello-p">Hello Hello World!</p>
console.log(p.id);
// LOG: 'hello-p'
p.click(); // calling click

我最终收到以下消息:

TypeError:"undefined"不是一个函数(计算'p.click()')

问:为什么 p 可以未定义?

好的。由于基于webkit的PhantomJS,我必须像这样创建/发送事件:

  var cle = document.createEvent("MouseEvent");
  cle.initEvent("click", true, true);
  var elem = document.getElementById('hello-p');
  elem.dispatchEvent(cle);

最新更新