2014-11-19 3 views
1

У меня есть запрос, похожий на this question here, и я только что нашел и смотрю this request here as well. Я пытаюсь создать макрос VBA для очистки некоторых веб-данных, и я прошел через экран входа в систему, но теперь я застрял, поскольку страница, похоже, написана на javascript, и я совершенно не знаком с тем, как работать с Это. Я довольно нечеткий с HTML, и я просто учил себя, когда я собираюсь. Ниже мой VBA пока что, с отмененными строками кода, показывающими, что я пробовал, который не работал. То, что я пытаюсь сделать, это щелкнуть ссылку на «Отчеты», которая находится в раскрывающемся меню под названием «My Sequentra», активируемом onmouseover. Спасибо за помощь.VBA, чтобы щелкнуть по выпадающему меню hover

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

Вы пробовали '.execScript' на всем javascript с параметрами? например 'ie.documents.parentWindow.execScript 'javascript: loadFrame (' appReportsShow.do ', this, {isNewWindow: false, width: -1, height: -1});" ' – Jeeped

+0

@Jeeped Я попробовал ваше предложение, и это все еще застрял в том месте, где я был, он входит в систему, но, похоже, не может выполнить .do для доступа к странице отчетов –

+0

@ Jeeped, вы думаете, что это имеет какое-то отношение к действиям мыши, так как это выпадающее меню? Как и во втором вопросе, который я связал? –

ответ

1

нашел similar issue on ozgrid, использовал его в качестве базовой точки и получил его по ссылке. Решение ниже.

ie.document.all.Item 
Call ie.document.parentWindow.execScript("loadFrame('appReportsShow.do')", "JavaScript") 
.Click 
Смежные вопросы