javascript - 在 jasmine-phantomjs 测试中的 html 元素上调用 click() 函数

标签 javascript jasmine phantomjs

我使用 Karma 和 PhantomJS 运行测试:

INFO [karma]: Karma v0.12.32 server started at http://localhost:9876/ INFO [launcher]: Starting browser PhantomJS INFO [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' is not a function (evaluating 'p.click()')

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

最佳答案

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

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

关于javascript - 在 jasmine-phantomjs 测试中的 html 元素上调用 click() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29806153/

相关文章:

javascript - 嵌套内容的递归 JavaScript 函数过早生成结束标记

javascript - 尝试为每一行编写测试用例

angularjs - Eslint Angular 和 Jasmine : is not defined no-undef

javascript - 抓取 ajax 加载内容中的值会导致白页

javascript - PhantomJS 无法点击现有元素

javascript - 使用 javascript 在输入字段外输入时聚焦并输入输入字段

PHP mysql 而不是根据数据库键分配变量

javascript - iframe 填充或 ie6(及以下)选择 z-index 错误

javascript - 嵌套 AngularJS promise 在单元测试中不起作用

javascript - webshot 不会在 html 中渲染本地镜像