VBA点击悬停下拉菜单

时间:2014-11-19 22:12:20

标签: javascript html excel vba web-scraping

我收到类似于this question here的请求,我刚刚找到并正在调查this request here as well。我正在尝试构建一个VBA宏来抓取一些网络数据,我已经通过登录屏幕,但现在我被卡住了,因为页面似乎是用javascript写的,我完全不熟悉如何使用它。我对HTML非常模糊,并且一直在教我自己。下面是我的VBA到目前为止,取消的代码行显示我尝试过的功能无效。我正在尝试做的是点击“报告”链接,该链接位于由onmouseover激活的名为“我的Sequentra”的下拉菜单下。谢谢你的帮助。

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

以下是我正在查看的页面源代码:

<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>

1 个答案:

答案 0 :(得分:1)

找到similar issue on ozgrid,将其用作基点并让它点击。解决方案如下。

ie.document.all.Item
Call ie.document.parentWindow.execScript("loadFrame('appReportsShow.do')", "JavaScript")
.Click