我在 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
这样我就打开了指定的 URL。
然后,我将条形码值放在 HTML 的搜索字段中,并在同一表单的“提交”按钮(HTML 输入元素)上调用 .Click 方法。
我用我正在搜索的内容成功打开了搜索结果页面,但是浏览器控件已经处于 WebBrowser.ReadyState = READYSTATE_COMPLETE 状态,并且我无法跟踪浏览器控件何时完成第二次加载 - 在这种情况下是搜索页面。
有没有办法重置 ReadyState 属性以了解第二次加载何时完成?
最佳答案
因为DocumentComplete
它不可靠(感谢 Alex 的建议!) - 有时它会在页面完全加载之前触发,导致我的工作需要的部分丢失,我结束了使用这个:
Set MyObj = Nothing
Do
DoEvents
Set MyObj = WebBrowser.Document.all("myobjID")
Loop Until Not MyObj is Nothing
但这是临时解决方案 - 我不确定我是否会在 DOM 中始终拥有这个 myobjID!
关于excel - VBA Excel WebBrowser如何在.Click之前从代码中重置ReadyState?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16605057/