1

I've got a request similar to this question here, and I've just found and am looking into this request here as well. I'm trying to build a VBA macro to scrape some web data, and I've gotten through the login screen but now I'm stuck as the page seems to be written in javascript and I'm completely unfamiliar with how to work with it. I'm pretty fuzzy with HTML and have been just teaching myself as I'm going. Below is my VBA so far, with the canceled code lines showing what I've tried that didn't work. What I'm trying to do is click a link to 'Reports' which is under a dropdown menu called 'My Sequentra' activated by onmouseover. Thank you for your help.

Sub SingleSiteReportPull()

Dim ie As Object
Dim form As Variant, button As Variant

Set ie = CreateObject("InternetExplorer.Application")

'''''Set input boxes for username, password, & site to pull report for'''''
myusername = InputBox("Enter Your Sequentra Username")
mypassword = InputBox("Enter Your Sequentra Password")
searchsite = InputBox("Which site would you like to pull a report for?")

'''''Go to webpage'''''
With ie
.Visible = True
.navigate ("https://www.sequentra.net/seq-security/ssoLogin.go")

While ie.ReadyState <> 4
    DoEvents
Wend

'''''enter username & password'''''
On Error Resume Next

ie.document.getelementsbyname("j_username").Item.innertext = myusername
ie.document.getelementsbyname("j_password").Item.innertext = mypassword 

'''''submit login info'''''
With appIE
    ie.document.forms(0).submit
End With

'''''click through menus to reports'''''   
'Set frms = ie.document.getelementsbyTagname("FORM")
'Set button = form(0).onsubmit
'form(0).submit

'Set link = ie.document.getelementsbytagname("a")
'For Each l In link
 '   If link.classname = "appReportsShow.do" Then
   '     link.Click
    '    Exit For
    'End If
'Next l

'ie.documents.parentWindow.execScript "loadFrame('appReportsShow.do')", "JavaScript"

'Do While ie.busy: DoEvents: Loop

End With
Set ie = Nothing
End Sub

Here is the page source code I'm looking at:

<li class="clsTopMenuItem active" onmouseover="expandTopMenu(this)" onmouseleave="collapseTopMenu(this)"><a href="javascript:void(0);">My Sequentra</a>                 
    <ul style="display: none;">                     
        <li class="clsSubMenu" onmouseover="expandMenu(this)" onmouseleave="collapseMenu(this)"><a onclick="loadFrame('javascript:goHome()', this, {isNewWindow: false, width:-1, height:-1})" href="javascript:void(0);">Home</a>
        </li>                               
        <li class="clsSubMenu" onmouseover="expandMenu(this)" onmouseleave="collapseMenu(this)"><a onclick="loadFrame('appReportsShow.do', this, {isNewWindow: false, width:-1, height:-1})" href="javascript:void(0);">Reports</a>
        </li>
        <li class="clsSubMenu" onmouseover="expandMenu(this)" onmouseleave="collapseMenu(this)"><a onclick="loadFrame('notificationMyAlertListShow.go', this, {isNewWindow: false, width:-1, height:-1})" href="javascript:void(0);">My Alerts</a>
        </li>
    </ul>                           
</li>
Community
  • 1
  • 1
Ian Schneider
  • 83
  • 3
  • 13
  • Have you tried the `.execScript` on the entire javascript with the paramters? e.g `ie.documents.parentWindow.execScript "javascript:loadFrame('appReportsShow.do', this, {isNewWindow: false, width:-1, height:-1});"` –  Nov 19 '14 at 23:21
  • @Jeeped I tried your suggestion and it's still stuck at where I was, it logs in but doesn't seem to be able to execute the .do to access the reports page – Ian Schneider Nov 19 '14 at 23:52
  • @Jeeped do you think it has something to do with mouse actions since it's a hover dropdown? Like in the second question I linked? – Ian Schneider Nov 19 '14 at 23:57
  • I don't think it has to do with the mouse as I have used `.execScript` to force through dynamic JSON content on a web load. One thing I did not notice the first time around (and unfortunately copied from your sample code) was that you are using `ie.document►S◄.parentWindow.execScript`. It should probably be `ie.Document.parentWindow.execScript`. –  Nov 20 '14 at 00:05
  • @jeeped worked out a solution, thank you for your assistance! – Ian Schneider Nov 20 '14 at 00:51
  • Glad to hear you got sorted out. If you wait 48 hours, you'll be able to accept your response below as the answer. This would benefit others with similar problems looking for solutions on this timely issue. –  Nov 20 '14 at 05:53

1 Answers1

1

found a similar issue on ozgrid, used it as a base point and got it to click through. Solution below.

ie.document.all.Item
Call ie.document.parentWindow.execScript("loadFrame('appReportsShow.do')", "JavaScript")
.Click
Ian Schneider
  • 83
  • 3
  • 13