如何告诉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。这是正确的方法吗?在循环运行时关闭窗体并观看大屠杀。