【问题标题】:Node.js module that inspects DOM elements检查 DOM 元素的 Node.js 模块
【发布时间】:2011-05-10 02:29:21
【问题描述】:

我正在使用zombie.js,这是一个主要用于测试目的的无头浏览器。它创建一个浏览器对象,一旦调用函数visit(),您就可以使用给定页面的DOM。但是,我无法达到那种程度。看起来僵尸中使用的解析器存在问题。 这是错误:

User/murf/Documents/workspace/node_code/node_modules/zombie/node_modules/html5/lib/html5/tokenizer.js:62

有没有人发现类似的问题?如果是这样,有没有办法绕过它?或者也许有另一个节点模块做类似的工作?非常感谢任何想法。

谢谢

【问题讨论】:

  • 您列出的错误只是发生错误的位置。当然还有一个错误message
  • @Crowder 是的。我认为它太长了,无法真正展示它。但这里有一部分 --> 错误:未定义:属性名称:“在 Object.createAttribute

标签: javascript node.js zombie.js


【解决方案1】:

ZombieJS 和其他 web 测试工具是建立在 JSDOM 之上的,就像 Zombie 一样非常易于使用。然而问题是你没有“类型”之类的东西,但你可以很容易地在 JSDOM 中模拟它,例如:

var jsdom = require("jsdom");

jsdom.env("http://nodejs.org/dist/", [
  'http://code.jquery.com/jquery-1.5.min.js'
], function(errors, window) {
  console.log("there have been", window.$("a").length, "nodejs releases!");
});

这是来自 JSDOM 的代码示例,所以如果你想模拟类型,你必须手动触发 keydown

$('someInput')
              .val('x')
              .keydown();

这将以某种方式模拟type('x'),例如。用于触发获取建议框的谷歌搜索。
但是,为了正确模拟它,您必须使用 keyCode 和所有内容创建一个 keydown 事件。

我正在为 Node 开发一个名为 htmlnode 的新无头浏览器,但它仍在开发中,预计下周可以使用,并且它建立在 HtmlUnit 之上。

其他选项:

【讨论】:

  • @fabricemarcelin 很高兴 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
  • 2013-01-04
  • 2011-10-03
  • 1970-01-01
  • 2014-09-30
  • 2018-07-09
  • 2013-11-09
相关资源
最近更新 更多