当前位置:编程学习 > C#/ASP.NET >>

不能获取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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,