【问题标题】:Get full actual html page source including the frameset获取完整的实际 html 页面源代码,包括框架集
【发布时间】:2012-09-13 08:10:19
【问题描述】:

对于我们的功能测试自动化,我们使用带有 Webtest 插件的 QTP。我可以控制 DOM(但不是以一种简单的方式),并且可以使用 VBScript 和部分 Javascript 来找到解决方案。

每当我们在测试过程中遇到错误时,我都想在那一刻捕获完整的 HTML 页面源代码。稍后,当我们从报告中检查错误时,我们可以看到发生了什么以及当时 DOM 的样子。

因此,我寻找捕获此来源的可能性。通常我是这样做的

htmlSource = browser("micClass:=Browser").page("micClass:=Page").Object.documentElement.outerHTML

或

htmlSource = browser("micClass:=Browser").page("micClass:=Page").Object.getElementsByTagName("html")(0).innerHTML

不幸的是,这只会捕获框架集和框架的标记的全部内容,而不是位于框架中的实际内容。 (这里是经典框架,不是 IFrame)

现在我想要一种实时捕获完整 DOM 源的方法,包括框架集中的内容。而且我希望它们以正确的顺序和位置出现,就像源代码出现在 IE Developer Tool 的 HTML 视图中一样。

有人知道我该如何处理吗?

【问题讨论】:

    标签: javascript html dom vbscript qtp


    【解决方案1】:

    如果你真的需要在页面的 HTML 中内联框架的源代码,我知道实现这一点的唯一方法是为每个元素递归构建 HTML。这可能需要做很多工作,因为对于每个元素,您必须先从 outerHTML 中删除 innerHTML,然后才能访问子元素(并正确插入它们)。

    如果您可以忍受框架的 HTML 在外部,您可以使用 Page.ChildObjects() 和描述 micclass=Frame,然后使用与页面相同的机制 (frames(i).Object.documentElement.outerHTML)。

    请注意,您将获取页面下的所有框架,因此即使框架嵌套在 DOM 中,也无需获取 Frame 测试对象的子对象。

    【讨论】:

    • 谢谢莫蒂,我担心会是这样。递归构建它会占用太多性能,所以也许我尝试了 getframes 技巧。这将是丑陋的,但如果这是我唯一的机会,那就丑陋了。
    猜你喜欢
    • 1970-01-01
    • 2012-07-22
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    相关资源
    最近更新 更多