对于我们的功能测试自动化,我们将QTP与Webtest插件一起使用。我可以控制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视图中一样。
有没有人知道如何管理它?
答案 0 :(得分:1)
如果你真的需要在页面的HTML中内嵌框架的源代码,我知道实现这一点的唯一方法就是为每个元素递归地构建HTML。这可能是很多工作,因为在转到子元素(并正确插入)之前,您必须从innerHTML
中删除outerHTML
的每个元素。
如果你可以使用框架的HTML在外面,你可以使用Page.ChildObjects()
和描述micclass=Frame
,然后使用你用于页面的相同机制(frames(i).Object.documentElement.outerHTML
)。 / p>
请注意,您将获得页面下的所有帧,因此即使帧嵌套在DOM中,也无需获取Frame
测试对象的子对象。