2016-04-27 4 views
0

У меня есть вопрос. Я не могу понять, как ответить на вопрос о том, как отправить событие в VBA.dispatchEvent - автоматизация VBA IE

На веб-сайте я пытаюсь перемещаться по VBA, есть динамическая таблица id = "G_grdProfile". В таблице html перечислены события. Сама таблица динамична. Как минимум всегда будет строка с id = "grdProfile_r_0". Внутри этой строки есть ячейки, которые можно щелкнуть. Может быть id = "grdProfile_rc_0_0", grdProfile_rc_0_1 "и т. Д.

Я предполагаю, что мне нужно отправить событие по отношению к строке или отдельной ячейке внутри строки, но я не могу заставить ее работать. Используя инструменты разработчика в Chrome и IE, похоже, что при нажатии на ячейку (кроме 17) происходит событие ondblclick или onmousedown. И .click не возвращает ошибку, но ничего не делает.

Мой код:

 With ie 
While .Busy Or .ReadyState <> 4: DoEvents: Wend 
Application.Wait (Now + TimeValue("0:00:02")) 
Set objLink = .Document.frames("mainParent").Document.forms("AgentProfileList").Document.getElementById("G_grdProfile").Document.getElementById("grdProfile_r_0").Document.getElementById("grdProfile_rc_0_2") 
objLink.dispatchEvent ("onmousedown") 
End With   

HTML-ссылка выше для этого раздела:

<TABLE onmouseup='igtbl_cellClickUp(event,"grdProfile");' onmouseover='igtbl_cellMouseOver(event,"grdProfile");' ondblclick='igtbl_cellDblClick(event,"grdProfile");' onmousemove='igtbl_cellMouseMove(event,"grdProfile");' onmousedown='igtbl_cellClickDown(event,"grdProfile");' onmouseout='igtbl_cellMouseOut(event,"grdProfile");' id=G_grdProfile onselectstart='igtbl_selectStart(event,"grdProfile");' style="WIDTH: 978px; TABLE-LAYOUT: fixed; POSITION: relative" oncontextmenu='igtbl_cellContextMenu(event,"grdProfile");' cellSpacing=0 cellPadding=0 border=0 bandNo="0"><COLGROUP> 

<TR id=grdProfile_r_0 style="HEIGHT: 20px" DataKey="XXXXX3658"><TD id=grdProfile_rc_0_0 class="ig_2e49b359_r1 GRSHand"><NOBR><SPAN id=fup_agentstdsearch_3765545><A onclick='javascript:xfupshow("fup_agentstdsearch_3765545");' href="javascript:void(0);"><IMG border=0 src="https://xchange.reged.com/ctiacom/images/flag000.gif"></A></SPAN>&nbsp;&nbsp;</NOBR></TD> 
<TD id=grdProfile_rc_0_1 class="ig_2e49b359_r1 GRSHand" style="DISPLAY: none" iDV="False"><NOBR><INPUT tabIndex=-1 onpropertychange='igtbl_chkBoxChange(event,"grdProfile");' type=checkbox></NOBR></TD> 
<TD id=grdProfile_rc_0_2 class="ig_2e49b359_r1 GRSHand"><NOBR>*LastName*</NOBR></TD> 
<TD id=grdProfile_rc_0_3 class="ig_2e49b359_r1 GRSHand"><NOBR>*FIrstName*</NOBR></TD> 
<TD id=grdProfile_rc_0_4 class="ig_2e49b359_r1 GRSHand"><NOBR>*MiddleName*</NOBR></TD> 
<TD id=grdProfile_rc_0_5 class="ig_2e49b359_r1 GRSHand" style="DISPLAY: none"><NOBR>3765545</NOBR></TD> 
<TD id=grdProfile_rc_0_6 class="ig_2e49b359_r1 GRSHand"><NOBR>*ID*</NOBR></TD> 
<TD id=grdProfile_rc_0_7 class="ig_2e49b359_r1 GRSHand"><NOBR>*ID2*</NOBR></TD> 
<TD id=grdProfile_rc_0_8 class="ig_2e49b359_r1 GRSHand"><NOBR>&nbsp;</NOBR></TD> 
<TD id=grdProfile_rc_0_9 class="ig_2e49b359_r1 GRSHand"><NOBR>*ID3*</NOBR></TD> 
<TD id=grdProfile_rc_0_10 class="ig_2e49b359_r1 GRSHand" style="DISPLAY: none"><NOBR>*ID2*</NOBR></TD> 
<TD id=grdProfile_rc_0_11 class="ig_2e49b359_r1 GRSHand" style="DISPLAY: none"><NOBR>*Location*</NOBR></TD> 
<TD id=grdProfile_rc_0_12 class="ig_2e49b359_r1 GRSHand" style="DISPLAY: none"><NOBR>PROD</NOBR></TD> 
<TD id=grdProfile_rc_0_13 class="ig_2e49b359_r1 GRSHand" style="DISPLAY: none"><NOBR>0</NOBR></TD> 
<TD id=grdProfile_rc_0_14 class="ig_2e49b359_r1 GRSHand" style="DISPLAY: none"><NOBR>7040</NOBR></TD> 
<TD id=grdProfile_rc_0_15 class="ig_2e49b359_r1 GRSHand" style="DISPLAY: none"><NOBR>&nbsp;</NOBR></TD> 
<TD id=grdProfile_rc_0_16 class="ig_2e49b359_r1 GRSHand" style="DISPLAY: none"><NOBR>&nbsp;</NOBR></TD> 
<TD id=grdProfile_rc_0_17 class="ig_2e49b359_r1 GRSHand"><NOBR><A onclick="viewProfile('3765545','*LastName* *FirstName*');" href="javascript:void(0);">View Profile Summary</A></NOBR></TD> 
<TD id=grdProfile_rc_0_18 class="ig_2e49b359_r1 GRSHand" style="DISPLAY: none"><NOBR>&nbsp;</NOBR></TD> 
<TD id=grdProfile_rc_0_19 class="ig_2e49b359_r1 GRSHand" style="DISPLAY: none"><NOBR>&nbsp;</NOBR></TD> 
<TD id=grdProfile_rc_0_20 class="ig_2e49b359_r1 GRSHand" style="DISPLAY: none"><NOBR>&nbsp;</NOBR></TD> 
<TD id=grdProfile_rc_0_21 class="ig_2e49b359_r1 GRSHand" style="DISPLAY: none"><NOBR>&nbsp;</NOBR></TD></TR> 

Любые идеи, или я даже использую диспетчерский прием правильно?

+0

Некоторые больше информации я выяснил, ID = «действует G_grdProfile» как EventListener для ячейки я хочу «нажать» или запустить событие для «grdProfile_rc_0_2». Так зная, что, как я буду строить это для отправки? – CasWalker

ответ

0

Я понял, что нужно было, чтобы несколько событий мыши должны были стрелять, чтобы двигаться вперед.

В конце концов я установил ячейку в таблице, которую я хотел щелкнуть, и использовал fireEvent, чтобы запустить все события onmouse *, которые должны были произойти.

 Set objLink = IE1.document.frames("mainParent").document.forms("AgentProfileList").document.getElementById("grdProfile_r_0").document.getElementById("grdProfile_rc_0_2") 
objLink.fireEvent ("onmouseover") 
objLink.fireEvent ("onmousedown") 
objLink.fireEvent ("onmouseup") 

 Смежные вопросы

  • Нет связанных вопросов^_^