Node.js модуль, который проверяет элементы DOM

#javascript #node.js #zombie.js

#javascript #node.js #zombie.js

Вопрос:

Я использую zombie.js , безголовый браузер, в основном для целей тестирования. Он создает объект браузера, который после вызова функции visit() позволяет вам играть с DOM данной страницы. Однако я не смог довести его до такой степени. Похоже, что возникла проблема с анализатором, используемым в zombie. Вот ошибка:

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

Кто-нибудь обнаружил подобную проблему? Если да, есть ли способ обойти это? Или, может быть, есть другой модуль node, который выполняет аналогичную работу? Любая идея приветствуется.

Спасибо

Комментарии:

1. То, что вы указываете для ошибки, — это именно то, где произошла ошибка. Наверняка там также есть сообщение об ошибке?

2. @Crowder да, есть. Я думал, что это слишком долго, чтобы на самом деле показывать это. Но вот часть -> Ошибка: не определено: имя атрибута: » в Object.createAttribute

Ответ №1:

ZombieJS и другие инструменты веб-тестирования построены на 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') , например. для поиска в Google это приведет к получению окна с предложениями.
Однако, чтобы правильно его имитировать, вы должны создать событие keydown с кодом ключа и всем остальным.

Я работаю над новым безголовым браузером для узла под названием htmlnode, но его работа все еще продолжается, ожидается, что его можно будет использовать на следующей неделе, и он построен поверх HtmlUnit.

Другие варианты: