VBA单击悬停下拉菜单

VBA to click through hover dropdown menus

本文关键字:下拉菜单 悬停 单击 VBA      更新时间:2023-09-26

我在这里有一个类似于这个问题的请求,我刚刚在这里找到并正在研究这个请求。我正在尝试构建一个 VBA 宏来抓取一些 Web 数据,我已经通过登录屏幕,但现在我卡住了,因为页面似乎是用 javascript 编写的,我完全不熟悉如何使用它。我对HTML很模糊,只是在我前进的过程中自学。下面是我到目前为止的 VBA,取消的代码行显示了我尝试过但不起作用的代码行。我正在尝试做的是单击指向"报告"的链接,该链接位于名为"我的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>

ozgrid上发现了类似的问题,将其用作基点并点击通过。解决方案如下。

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