【发布时间】:2011-07-30 00:20:00
【问题描述】:
我一直在尝试在 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:inexecute_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 代码似乎遥不可及。
我怎样才能让它工作?
【问题讨论】:
标签: javascript firefox watir firewatir