我正在编写一个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 :(得分: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从集合中调用来清理代码。你可能会说,这对我来说还是一个新鲜事。
不要忘记等到元素准备就绪。