我一直在尝试在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