不能获取frame的内容,痛苦!
我做测试开发的做协助qtp开发的(用vb.net写测试脚本),目地是想验证打开的ie页面是否存在一个指定的字符串,
通过引用microsoft html object library组件来完成(mshtml.tlb),
一般ie页面的body,弹出框以及frame内容的都可以获得,
但是测试某些页面(比如网上银行),
访问页面中的frame内容时,报UnauthorizedAccessException这个异常,
而惠普的QTP测试专业测试工具访问页面是没有这个问题的,
我知道是网银的页面加了安全限制才会抛UnauthorizedAccessException,
为什么QTP不会呢?我怎么能解决这个问题?
请高高手指点,非常感谢!
"frmDoc = frame.document" 这段代码抛出UnauthorizedAccessException,能获得frames.length,但是不能访问具体的frame.document
具体代码如下:
Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
Try
Dim SWs As New SHDocVw.ShellWindows
Dim IE As SHDocVw.InternetExplorer
Dim Doc As Object
Dim ObjDoc As mshtml.HTMLDocument
Dim frmDoc As mshtml.HTMLDocument
'ListBox1.Clear()
'List2.Clear()
'Text1.Text = SWs.count
Dim strlist1 As String = ""
Dim strlist2 As String = ""
Dim i As Integer = 0
Dim j As Integer = 0
Dim k As Integer = 0
Dim flag As Boolean = False
MsgBox("您要查找的字符是:" & (TextBox1.Text))
For Each IE In SWs
i = i + 1
Doc = IE.Document
If TypeOf Doc Is mshtml.HTMLDocument Then
j = j + 1
ObjDoc = Doc
'MsgBox(ObjDoc.title)
If j = 1 Then
'Dim dialog As mshtml.HTMLDialog = Doc.ToString
'MsgBox("ceshi内容:" & ObjDoc.body.innerHTM)
MsgBox(ObjDoc.body.innerHTML)
MsgBox(ObjDoc.frames.length)
For k = 0 To ObjDoc.frames.length - 1
'MsgBox(ObjDoc.frames.item(k).ToString)
Dim frame As mshtml.HTMLWindow2Class = Doc.frames.item(0)
frmDoc = frame.document
'显示frame内容
MsgBox("frame内容:" & frmDoc.body.outerHTML)
flag = frmDoc.body.outerHTML.Contains(TextBox1.Text)
If flag = True Then
MsgBox("恭喜!您查找的字符'" & (TextBox1.Text) & "'在frame内." & (TextBox1.Text))
Else
MsgBox("Sorry!您查找的字符'" & (TextBox1.Text) & "'不frame内." & (TextBox1.Text))
End If
Next
flag = False
flag = ObjDoc.body.innerHTML.Contains(TextBox1.Text)
If flag = True Then
MsgBox("恭喜!您查找的字符'" & (TextBox1.Text) & "'在页面内." & (TextBox1.Text))
Else
MsgBox("Sorry!您查找的字符'" & (TextBox1.Text) & "'不在页面内." & (TextBox1.Text))
End If
End If
End If
Next
MsgBox("-----------共打开" & (i) & "页面,其中,ie页面有" & (j) & "个-------------")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
--------------------编程问答-------------------- 我也找了好久没有得到答案,继续关注...期待高手不要埋默. --------------------编程问答-------------------- 我也不会啊。。。。。不过说几句
.NET这个东西对COM的结合不如VB6好。。。。
你的代码获取接口部分都没什么问题,不过这里:Dim frame As mshtml.HTMLWindow2Class = Doc.frames.item(0)
开始思路似乎有点问题,直接取ObjDoc对象来用似乎就能取全。。没测试
我的博客上有几篇这方面的东西,,,楼主可以看看有没有帮助。。。。。代码不太成熟,放弃很久了不写了 --------------------编程问答-------------------- 幫頂。
补充:.NET技术 , VB.NET