Access form elements on different Frames in VBScri

2019-08-24 02:17发布

问题:

I have these three frames on a website.

<frame scrolling="AUTO" src="../../vix/thalada/Rangasamy?MokkaKumuta1234567" name="AAN">

<frame scrolling="AUTO" src="../../vix/thalada/Rangasamy?MokkaK****13245678" name="BAN">

<frame scrolling="AUTO" src="../../vix/thalada/Rangasamy?MokkaK****85234175" name="CAN">

This is how it goes:

Set oIE = CreateObject("InternetExplorer.application")

        oIE.Visible = True
        oIE.navigate ("https://ec.rcuwebportal.au.eds.com/cics/r1cb/rm0p00ba?cb246")


     oIE.Document.getElementsByTagName("a").item(0).Click       // This works and it clicks on a image button in the frame named AAN. Fine

Next when I tried to access another text box that is present in the frame named BAN , I got the object not found error. Obviousy, because I'm still the frame AAN , but the element belongs to frame BAN.

Below is the textbox that is present in the frame named BAN.

<input type="text" maxlength="30" size="30" value=" " name="BAFREENAME"></input>

How do I access the form control on this frame? Any ideas? Appreciate your help.

回答1:

You can access all elements off of the frames by first, iterating through the frames, then referencing their contentWindow.document.

Dim oIE, aHTML, oIFrames, frame, i, obj, ifHTML: i = 1
Set oIE = CreateObject("InternetExplorer.application")
oIE.Visible = True

'This page must be remote...
oIE.navigate ("http://your/website...")
'local websites (file://) will return access denied on IFRAME/Frame Content viewing. 



Do
Loop While oIE.ReadyState < 4 And oIE.Busy

Set aHTML = oIE.document

Set iframes = aHTML.getElementsByTagName("frame")

For Each frame In iframes
    Set inputs = frame.contentwindow.document.getElementsByTagName("input")
    For Each obj In inputs
        If obj.className = "BAFREENAME" Then
            'MsgBox "found BAFREENAME in frame:" & i
        End If
    Next
i = i + 1
Next
'MsgBox "done"