我一直在尝试在 FireWatir 中创建一个简单的脚本,它将整个当前文档 DOM(包括 javascript 生成的代码)转换为 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/ruby/gems/1.9.1/gems/firewatir-1.9.2/lib/firewatir/jssh_socket.rb :19:injs_eval': XMLSerializer 未定义 (JsshSocket::JSReferenceError)
来自 c:/Ruby192/lib/ruby/gems/1.9.1/gems/firewatir-1.9.2/lib/firewatir/firefox.rb:136:in
execute_script' 来自 test.rb:9:in ` '
如果我输入这一行:
javascript:window.open('aout:blank').document.write('<pre>' + unescape((new XMLSerializer()).serializeToString(document).replace(/</g, '<')) + '</pre>')
进入 FF 位置框,我得到一个包含所需 XML 的页面。所以 XMLSerializer 必须在某个地方定义,它对于我的 JS 代码来说似乎遥不可及。
我怎样才能让它发挥作用?
最佳答案
不确定“位置框”是什么意思,但如果那是地址栏(本页显示 http://stackoverflow.com/...
的那个),则尝试这个:
browser.goto "javascript:window.open('aout:blank').document.write('<pre>' + unescape((new XMLSerializer()).serializeToString(document).replace(/</g, '<')) + '</pre>')"
关于javascript - 如何使用 watir 和 JavaScript 将 html 页面转储为 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6802593/