У меня есть веб-сайт, где я получил строку меню, которая находится в кадре 1, а ее подменю - в кадре 2. Теперь я нашел все элементы, куда мне нужно перейти.Но проблема, с которой я сталкиваюсь, заключается в том, что если я вручную наведу курсор на это меню, то код будет работать, но если я не получу, я получу ошибку № 91. Не могли бы вы помочь мне решить эту проблему?ниже приведен код, который я использую для того же.
Как только я наведу курсор на 1-й вариант, его HTML-код изменится, когда я снова наведу курсор мыши на 2-й пункт меню, HTML-код изменится.Как мне это контролировать?
ИМПОРТ (при наведении) -> СТАТИЧЕСКИЕ ДАННЫЕ (при наведении) -> ISIN (CLICK)
Sub test()
Dim IE As InternetExplorer
Dim doc, element
Set IE = New InternetExplorer
Dim frm
Dim menu
Dim submenu
Dim submenu2
IE.Visible = True
IE.Navigate URL
Do
DoEvents
Loop Until IE.ReadyState = READYSTATE_COMPLETE
IE.Document.all("usr_name").Value = uName
IE.Document.all("password").Value = pwd
IE.Document.getElementsByTagName("input")(7).Click
DoEvents
Loop Until IE.ReadyState = READYSTATE_COMPLETE
Sleep (2000)
Set doc = IE.Document
Sleep (5000)
'doc.frames(0).Document.getElementsByTagName("Body")(0).getElementsByTagName("Div")(5).FireEvent ("onclick")
'
'Sleep (2000)
'doc.frames(1).Document.getElementsByTagName("Body")(0).getElementsByTagName("span")(0).FireEvent ("onclick")
For Each element In doc.frames(0).Document.getElementsByTagName("Body")(0).getElementsByTagName("Div")
Debug.Print element.innerHTML
If InStr(1, element.innerHTML, "IMPORT", vbTextCompare) > 0 Then
element.Click
Exit For
End If
Next
'Frame 2 sub menu...I think I need something which can hover over these menu
For Each element In doc.frames(1).Document.getElementsByTagName("Body")(0).getElementsByTagName("span")
Debug.Print element.innerHTML
If InStr(1, element.innerHTML, "Static Data", vbTextCompare) > 0 Then
element.Click
Exit For
End If
Next
'This is where I click
For Each element In doc.frames(1).Document.getElementsByTagName("Body")(0).getElementsByTagName("div")
If InStr(1, element.innerHTML, "ISIN", vbTextCompare) > 0 Then
Debug.Print element.innerHTML
element.Click
Exit For
End If
Debug.Print element.innerHTML
Next element
'doc.frames(1).Document.getElementsByTagName("Body")(0).getElementsByTagName("Span")(28).Click '' ISIN
End Sub
Пожалуйста, дайте мне знать, если мне нужно предоставить какие-либо другие данныеВот.Пожалуйста, найдите ниже html, когда я не наведу курсор мыши на меню ...
TR>
<TD onclick=fSetSelected(this) onmouseover=this.bgColor=gcToggle onmouseout=this.bgColor=gcBG id=calCell style="CURSOR: hand; FONT: bold 16px Courier" bgColor=#cccccc height=18 vAlign=middle borderColor=#cccccc align=center><FONT id=cellText Victor="Liming Weng"></FONT></TD>
<TD onclick=fSetSelected(this) onmouseover=this.bgColor=gcToggle onmouseout=this.bgColor=gcBG id=calCell style="CURSOR: hand; FONT: bold 16px Courier" bgColor=#cccccc height=18 vAlign=middle borderColor=#cccccc align=center><FONT id=cellText Victor="Liming Weng"></FONT></TD>
<TD onclick=fSetSelected(this) onmouseover=this.bgColor=gcToggle onmouseout=this.bgColor=gcBG id=calCell style="CURSOR: hand; FONT: bold 16px Courier" bgColor=#cccccc height=18 vAlign=middle borderColor=#cccccc align=center><FONT id=cellText Victor="Liming Weng"></FONT></TD>
<TD onclick=fSetSelected(this) onmouseover=this.bgColor=gcToggle onmouseout=this.bgColor=gcBG id=calCell style="CURSOR: hand; FONT: bold 16px Courier" bgColor=#cccccc height=18 vAlign=middle borderColor=#cccccc align=center><FONT id=cellText Victor="Liming Weng"></FONT></TD>
<TD onclick=fSetSelected(this) onmouseover=this.bgColor=gcToggle onmouseout=this.bgColor=gcBG id=calCell style="CURSOR: hand; FONT: bold 16px Courier" bgColor=#cccccc height=18 vAlign=middle borderColor=#cccccc align=center><FONT id=cellText Victor="Liming Weng"></FONT></TD>
<TD onclick=fSetSelected(this) onmouseover=this.bgColor=gcToggle onmouseout=this.bgColor=gcBG id=calCell style="CURSOR: hand; FONT: bold 16px Courier" bgColor=#cccccc height=18 vAlign=middle borderColor=#cccccc align=center><FONT id=cellText Victor="Liming Weng"></FONT></TD>
<TD onclick=fSetSelected(this) onmouseover=this.bgColor=gcToggle onmouseout=this.bgColor=gcBG id=calCell style="CURSOR: hand; FONT: bold 16px Courier" bgColor=#cccccc height=18 vAlign=middle borderColor=#cccccc align=center><FONT id=cellText Victor="Liming Weng"></FONT></TD></TR>
<TR>
<TD onclick=fSetSelected(this) onmouseo
SETUP
ver=this.bgColoIMPORT
EXPORT
REPORTS
BILLING
MIS
DOC TRACKING
LOG OUT
r=gcToggle onmouseout=this.bgColor=gcBG id=calCell style="CURSOR: hand; FONT: bold 16px Courier" bgColor=#cccccc height=18 vAlign=middle borderColor=#cccccc align=center><FONT id=cellText Victor="Liming Weng"></FONT></TD></TR></TBODY></TABLE>
Ниже код, который я нашел в javascript: Неужели это поможет понять проблему?
oCFMenu.makeTop('IMPORT') //Main 2
oCFMenu.makeSub('Static Data »')
oCFMenu.makeSub2('ISIN','import_isin.asp','frmMain')
oCFMenu.makeSub2('Business Partner','import_bp.asp','frmMain')
oCFMenu.makeSub2('CC Calender','import_cccalender.asp','frmMain')
oCFMenu.makeSub2('Auto Corporate','import_autocorporate.asp','frmMain')
oCFMenu.makeSub2('CA (Corporate Action)','import_autocorporateCA.asp','frmMain')
ниже приведены соответствующие HTML для ИМПОРТА, СТАТИЧЕСКИХ ДАННЫХ и ISIN
<DIV id=divTop1 class=clMain style="CLIP: rect(0px 126px 20px 0px); HEIGHT: 20px; WIDTH: 126px; LEFT: 80px; TOP: 39px; VISIBILITY: visible; BACKGROUND-COLOR: #cccccc">IMPORT</DIV>
<DIV id=divSub0 class=clSubs style="LEFT: 80px; TOP: 0px; VISIBILITY: visible; BACKGROUND-COLOR: #cccccc"><SPAN class=clSub style="COLOR: white">Static Data »</SPAN></DIV>
<DIV id=divSub2_0 class=clSubs2 style="LEFT: 239px; TOP: 8px; VISIBILITY: visible; BACKGROUND-COLOR: #cccccc"><SPAN class=clSub2 style="COLOR: white">ISIN</SPAN></DIV>