3

对于我们的功能测试自动化,我们使用带有 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 视图中一样。

有谁知道我怎么能做到这一点?

4

1 回答 1

1

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

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

Note that you'll get all the frames under the page so there's no need to get the child objects of the Frame test objects even if the frames are nested in the DOM.

于 2012-09-13T09:40:55.387 回答