Ian Schneider
Ian Schneider

Reputation: 83

VBA to click through hover dropdown menus

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>

Upvotes: 1

Views: 4605

Answers (1)

Ian Schneider
Ian Schneider

Reputation: 83

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

Upvotes: 1

Related Questions