2016-07-13 91 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从集合中调用。这对我来说还是很新的,你可能会说。

并且不要忘记等待元素准备就绪。