javascript - 如何使用 watir 和 JavaScript 将 html 页面转储为 XML?

标签 javascript firefox watir firewatir

我一直在尝试在 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 未定义 (JsshSocket::JSReferenceError) 来自 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, '&lt;')) + '</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, '&lt;')) + '</pre>')"

关于javascript - 如何使用 watir 和 JavaScript 将 html 页面转储为 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6802593/

相关文章:

python - selenium python 绑定(bind)是否需要 firefox

javascript - 使用位于插件文件夹内的参数执行二进制文件

selenium - Watir - 驱动 Chrome 时 file_field 调用点击了错误的元素

javascript - 在动态添加的元素上应用带有选项的 jquery 插件/函数

javascript - 没有 CoffeeScript 的 TowerJS?

ruby - 使用 Ruby 自动化脚本打开 Firefox 浏览器

ruby - 如何在测试单元中获取当前测试用例名称?

Ruby 正则表达式和字符串变量

javascript - 如何使用 Javascript 代码通过按钮在两个图像之间切换?

javascript - 如何将node.js服务器应用程序编译为可执行文件?