我一直在尝试在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:in
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'from 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/