我在Excel VBA中有类似的代码,其中WebBrowser控件以一种形式插入:
basePath = "http://www.amazon.co.uk/"
' Open main website (Home page)
WebBrowser.Navigate basePath
PauseTime = 30 ' Set duration to wait in seconds.
Start = Timer ' Set start time.
Do ' While Timer < Start + PauseTime
DoEvents ' allow other processes to work (the browser to have time to load the webpage)
Loop Until WebBrowser.ReadyState = READYSTATE_COMPLETE Or Timer > Start + PauseTime
这样我就会打开指定的网址。 然后我将条形码值放在HTML的搜索字段中,并在同一表单的“提交”按钮(HTML输入元素)上调用.Click方法。
我使用我正在搜索的内容成功打开搜索结果页面,但浏览器控件已经处于WebBrowser.ReadyState = READYSTATE_COMPLETE状态,我无法跟踪浏览器控件何时完成第二次加载 - 此处的搜索页面情况下。
有没有办法重置ReadyState属性以便知道第二次加载何时结束?
答案 0 :(得分:1)
因为DocumentComplete
它不可靠(谢谢Alex的建议!) - 有时它会在页面完全加载之前触发,导致我的工作缺少部分,我最终使用了这个:
Set MyObj = Nothing
Do
DoEvents
Set MyObj = WebBrowser.Document.all("myobjID")
Loop Until Not MyObj is Nothing
但这是临时解决方案 - 我不确定我会在DOM中始终拥有这个myobjID! 我还在等着合适的人! 请帮忙!
答案 1 :(得分:0)
使用文档完全加载时引发的DocumentComplete
事件,因此每次调用.Navigate
时都会触发该事件。
(这包括框架,所以如果有任何框架,你需要使用事件收到的URL参数过滤它们)