2011-05-08 45 views
3

我使用zombie.js,這是一款主要用於測試目的的無頭瀏覽器。它創建一個瀏覽器對象,一旦函數visit()被調用,您就可以使用給定頁面的DOM進行播放。但是,我無法達到這個程度。看起來殭屍中使用的解析器存在問題。 以下是錯誤:檢查DOM元素的Node.js模塊

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

有沒有人發現了類似的問題?如果是這樣,是否有辦法繞過它?或者也許有另一個節點模塊執行類似的工作?任何想法非常感謝。

感謝

+1

您列出的錯誤是什麼錯誤發生流向何方。當然還有一個錯誤*消息*? – 2011-05-08 07:55:58

+0

@Crowder是的。我認爲實際展示時間太長了。但這裏是一個部分 - >錯誤:undefined:屬性名稱:「 在Object.createAttribute – fabricemarcelin 2011-05-08 08:00:17

回答

5

ZombieJS和其他網絡測試工具是建立在JSDOM這是很容易使用,就像殭屍。然而,事情是你沒有的東西,如「型」,但你可以很容易地模仿它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代碼示例, 「將不得不觸發例如​​手動

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

在某種程度上將模擬type('x'),爲前。對於谷歌搜索,將觸發獲取建議框。
但是,爲了正確模擬它,你必須用keyCode和所有東西創建一個keydown事件。

我正在爲節點的新模擬瀏覽器稱爲htmlnode,但在進行的工作,預計可於下週,它建立在HtmlUnit頂部。

其他選項:

+0

非常感謝你。這是非常有幫助的。 – fabricemarcelin 2011-05-08 16:44:28

+0

@fabricemarcelin我的榮幸:) – 2011-05-08 17:18:12