如何告诉vb.net等待加载完成?(iframe.dll)

如何告诉vb.net等待加载完成?(iframe.dll),vb.net,vb.net-2010,Vb.net,Vb.net 2010,我正在尝试创建一个脚本来导航到网页,等待加载元素,然后从新页面收集元素。目前,此脚本应在以下位置等待,但它正在直接运行: Do Until AxWebBrowser1.ReadyState = WebBrowserReadyState.Complete it处理后: htmldoc.getElementsByName("GetCase").item(0).click() 'click the submit button 我立即得到第二个子页面的messagebox弹出窗口,而实际上页面还没

我正在尝试创建一个脚本来导航到网页,等待加载元素,然后从新页面收集元素。目前,此脚本应在以下位置等待,但它正在直接运行:

Do Until AxWebBrowser1.ReadyState = WebBrowserReadyState.Complete 
it处理后:

htmldoc.getElementsByName("GetCase").item(0).click() 'click the submit button
我立即得到第二个子页面的messagebox弹出窗口,而实际上页面还没有完成加载。如何解释这一点,并让脚本等待页面准备就绪,然后使htmldoc=axwebbrowser1.document

Private Sub GetCase()

    htmldoc = AxWebBrowser1.Document.frames("top").document 'set the top frame to be searched for

    setval = htmldoc.getElementsByName("caseNum").item(0) 'grab the input name for contracts

    setval.value = TextBox1.Text 'set the textbox value into the web form input
    TextBox1.Clear()

    htmldoc.getElementsByName("GetCase").item(0).click() 'click the submit button


    Do Until AxWebBrowser1.ReadyState = WebBrowserReadyState.Complete 'do events until it is complete
        Application.DoEvents()
    Loop


    If ComboBox1.Text = "MM" Then
        Gather()

    End If

End Sub



Private Sub Gather()
    Do Until AxWebBrowser1.ReadyState = WebBrowserReadyState.Complete 'do events until it is complete
        Application.DoEvents()
    Loop

    htmldoc = AxWebBrowser1.Document
    MessageBox.Show("got elements")


End Sub
单击()之后,在检查ReadyState之前,您需要等待一段时间,即2秒,以允许浏览器响应单击事件。比如:

for i as integer = 0 to 10
    Sleep(200)
    Application.Doevent()
next

然后检查readystate

是的,这不太可能正常工作。单击事件倾向于调用一些Javascript。这根本不会影响浏览器的就绪状态。事实上,脚本执行是完全不可观察的,除了它可能带来的延迟副作用。所有这些代码,除去DoEvents,都属于DocumentCompleted事件处理程序。我考虑过了,但我的页面似乎加载了一个中间页面,然后继续加载我的最后一个页面,没有可用的引用url。谢谢你的宝贵见解。我可以按照文档_complete的思路做一些事情,检查该页面的唯一元素,如果它们不是空的,就这样调用sub。这是正确的方法吗?在循环运行时关闭窗体并观看大屠杀。