逻辑循环,直到网页元素不是什么

时间:2012-10-10 15:14:13

标签: vba

*将HTML对象库与vba一起使用 *(CAS设置为浏览器实例(shdocvw))

Set HTMLDoc = CAS.document.frames("MainFrame").document 'pull the main frame    

Do Until Not HTMLDoc Is Nothing
DoEvents
Loop

我不认为这是正确的,因为它只会设置一次HTMLDoc,如果它什么也没有,它会一遍又一遍地循环,检查它是什么,但因为它只被调用一次。一个更好的方法,imho,可以检查一个元素并循环,直到元素存在,因为页面可以加载,但我从DB中拉出的元素需要半秒钟左右。我只是不确定如何编写循环以继续设置htmldoc,然后继续检查其中的元素并非一无是处。 (即使我的等待计时器没有等待足够长的时间,也是如此,在元素存在之前不应该继续)

1 个答案:

答案 0 :(得分:2)

如果您想等待特定元素:

    Dim el As Object

    Do
        Set el = Nothing
        On Error Resume Next
        Set el = CAS.document.frames("MainFrame").document.getElementById("idHere")
        On Error GoTo 0
        DoEvents
    Loop While el Is Nothing

您可能希望在最长等待时间内构建,因此如果由于某种原因元素永远不会出现,则不会无限循环。