#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.
Другие варианты: