2

我在 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 属性以了解第二次加载何时完成?

4

2 回答 2

1

因为DocumentComplete它不可靠(感谢 Alex 的建议!) - 有时它会在页面完全加载之前触发,导致我的工作需要的部分丢失,我结束了使用这个:

Set MyObj = Nothing
Do
    DoEvents
    Set MyObj = WebBrowser.Document.all("myobjID")
Loop Until Not MyObj is Nothing

但这是临时解决方案 - 我不确定我是否会在 DOM 中始终拥有这个 myobjID!

于 2013-05-17T12:30:28.603 回答
0

使用DocumentComplete文档完全加载时引发的事件,因此每次调用.Navigate.

(这包括帧,因此如果存在任何帧,您需要使用事件接收的 URL 参数过滤它们)

于 2013-05-17T09:56:33.053 回答