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>
6
  • 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});" Commented Nov 19, 2014 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 Commented Nov 19, 2014 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? Commented Nov 19, 2014 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. Commented Nov 20, 2014 at 0:05
  • @jeeped worked out a solution, thank you for your assistance! Commented Nov 20, 2014 at 0:51

1 Answer 1

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
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.