html onClick事件不会用vba触发

时间:2016-07-13 18:28:32

标签: html excel vba

我正在编写一个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

有什么建议吗?

1 个答案:

答案 0 :(得分: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从集合中调用来清理代码。你可能会说,这对我来说还是一个新鲜事。

  

不要忘记等到元素准备就绪。