HTML - onmouseover, onmouseout - ошибка щелчка элемента - переменная объекта или блок не установлен Ошибка 91 - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть веб-сайт, где я получил строку меню, которая находится в кадре 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 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&raquo;')
        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&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;»</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>

1 Ответ

0 голосов
/ 13 декабря 2018

Хорошо. Так как это был вопрос простого наведения мыши, который, как мне кажется, не интерпретировал то, как его понимали другие, я понял это сам.Вместо использования события клика я сделал только одно изменение, и оно работает как шарм.

element.FireEvent "onmouseover"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...