2016-07-13 89 views
0

我正在寫一個vba程序來與網站交互並自動填寫表單。我已經獲得了其他類型的鏈接,但是有一些鏈接可以擴展表單的隱藏部分。這些在使用下面的代碼時不起作用。我需要知道是否有辦法做到這一點。html onClick事件不會用vba觸發

下面是HTML源代碼:

<a name="diForm:addProductSizeLnk" id="diForm:addProductSizeLnk" style="float: right;" 
 
onclick="jsf.util.chain(document.getElementById('diForm:addProductSizeLnk'), 
 
event,'jsf.ajax.request(\'diForm:addProductSizeLnk\',event,{execute:\'@none \', 
 
render:\'@none \',onevent:function(data){showEditor(data,\'diForm:productSizeEditor\', 
 
\'diForm:productSizeAddDiv\', false ? \'diForm:in_clinicallyRelSizeText\' : 
 
\'diForm:in_clinRelSizeType\')},\'javax.faces.behavior.event\':\'action\'})'); 
 
return false;" href="#">

我已經正確地引用鏈接和我使用下面的代碼:

For j = 0 To objCollectionA.Length - 1 
    If objCollectionA(j).Name = "diForm:addProductSizeLnk" Then 
     objCollectionA(j).FireEvent ("onclick") 
    End If 
Next 

有什麼建議?

+0

在亞馬遜網站上,它不那麼簡單,稱爲事件。找到該控件的父窗體並在所有輸入提交該窗體後。 – cyboashu

+0

您可以發佈整個VBA代碼,包括'objCollectionA'變量初始化。你有沒有嘗試'oIE.document.getElementById(「diForm:addProductSizeLnk」)。click'?並且不要忘記等待元素準備就緒。還要模擬點擊,你可以創建鼠標事件對象Set oMouseEvt = oIE.document.createEvent(「MouseEvents」)',初始化它'oMouseEvt.initMouseEvent「click」,True,True,.document.parentWindow,0,1, 1,1,1,False,False,True,False,0,「」並將其分派給目標元素oIE.document.getElementById(「diForm:addProductSizeLnk」)。dispatchEvent oMouseEvt'。 – omegastripes

回答

0

謝謝omegastripes您的評論。我以爲我在等待使用Do While IE.Busy Application.Wait DateAdd("s", 1, Now) Loop以及.readyState函數。我注意到該程序正在完成,但在objCollectionA(j).FireEvent ("onclick")生效之前。所以我慢慢地通過代碼,它的工作。現在我正在使用Application.Wait DateAdd("s", t, Now)將程序暫停幾秒鐘。我也正在使用IE.document.getElementById("diForm:addProductSizeLnk").click來清理代碼,而不是使用While-Wend從集合中調用。這對我來說還是很新的,你可能會說。

並且不要忘記等待元素準備就緒。