我一直在嘗試在FireWatir中創建一個將整個當前文檔DOM(包括JavaScript生成的代碼)轉換爲XML表示的簡單腳本。在網絡上如何使用watir和JavaScript將XML頁面轉儲爲XML?
以下線索,我此腳本想出了
require 'rubygems'
require 'firewatir'
browser = Watir::Browser.new
browser.goto('http://www.google.com/')
browser.text_field(:id, 'lst-ib').set('hello')
browser.button(:name, 'btnG').click
puts browser.execute_script("new XMLSerializer().serializeToString(document)")
然而,在Firefox 3.6中運行它,導致了這個錯誤:
C:/ Ruby192/lib中/紅寶石/寶石/ 1.9.1 /寶石/ firewatir-1.9.2/LIB/firewatir/jssh_socket.rb :19:js_eval': XMLSerializer is not defined (JsshSocket::JSReferenceError) from c:/Ruby192/lib/ruby/gems/1.9.1/gems/firewatir-1.9.2/lib/firewatir/firefox.rb:136:in
execute_script '從test.rb:9:在`'
如果我進入這一行:
javascript:window.open('aout:blank').document.write('<pre>' + unescape((new XMLSerializer()).serializeToString(document).replace(/</g, '<')) + '</pre>')
進入FF位置框,我得到一個頁面,所需的XML。所以XMLSerializer必須在某個地方定義,它的JS代碼似乎遙不可及。
我該如何得到這個工作?
邑使用產生的頁面確實意味着地址欄,我也嘗試這種方法,但是這會導致firefox中永不結束的加載標籤,直到watir放棄並拋出超時異常。 我沒有得到的是爲什麼不能從代碼訪問XMLSerilizer對象,顯然FF知道它! – Sam