gpt4 book ai didi

internet-explorer - VBA Internet Explorer 等待网页加载

转载 作者:行者123 更新时间:2023-12-04 09:00:45 25 4
gpt4 key购买 nike

我知道以前有人问过这样的问题,但我的有点不同,而且相当麻烦。我正在处理的是一个带有一些事件的表单的网页,当输入框中的某些项目被填写时,这些事件会加载更多的页面。当这些事件触发时,页面将再次加载,但仍保留在具有相同 nameprop 的相同 URL 中。我一直在使用以下类型的方法,单独和串在一起来处理等待页面加载,但有时 VBA 仍然设法继续执行并将 HTMLDocument 变量设置为页面,而页面上没有适当的信息导致宏调试。以下是我迄今为止一直在尝试的事情:

While IE.Busy
DoEvents
Wend

Do Until IE.statusText = "Done"
DoEvents
Loop

Do Until IE.readyState = 4
DoEvents
Loop

我什至试图将这些事件放入如下所示的循环中,但它并没有完全奏效,因为 lastModified 属性只返回一个向下到第二个的值,并且宏以足够快的速度旋转字段以返回一个新的同一秒页面:
Do Until IE.statusText = "Done" And IE.Busy = False And IE.ReadyState = 4 _
And IE.document.lastModified > LastModified ----or---- IE.document.nameprop = _
"some known and expected name prop here"
While IE.Busy
DoEvents
Wend
Do Until IE.statusText = "Done"
DoEvents
Loop
Do Until IE.readyState = 4
DoEvents
Loop
Loop

即使这样也无法等待足够长的时间来设置导致调试的 HTMLDocument 对象。我已经考虑设置下一个 input 元素并检查它以进一步推进代码,但即使这样也不会 100% 成功,因为通常 Input 元素存在于 HTML 中,但在触发适当的事件之前是隐藏的,这不会有问题,但在事件触发之前他们不会加载可能的选择。它可能是一个奇怪的页面。

无论如何......不知道还有什么要添加的。如果还有其他可能有助于查看的内容,请询问。我想我正在寻找的是一种让 VBA 等待 IE 知道另一个页面不在路上的方法。它似乎在完全完成之前加载了几次。

所以......有人有任何想法吗?

编辑:找到了一些新的尝试。仍然没有骰子。有人建议我添加这些尝试。这是代码,由于某种原因,在触发应填充 select 元素上的选项的事件后使用此方法时,VBE 和 excel 实例变得无响应...考虑尝试 xml...这里是代码:
intCounter = 0
Do until intCounter > 2
Do Until IE.Busy = False: DoEvents: Loop
Do Until IE.ReadyState = 4: DoEvents: Loop
Set HTMLDoc = IE.Document
Do Until HTMLDoc.ReadyState = "complete"
Set HTMLSelect = HTMLDoc.getElementById("ctl00$ctl00$MainContent$ChildMainContent$ddlEmployeeBranchCodes")
intCounter = 0
For each Opt in HTMLSelect
intCounter = intCounter + 1
Next Opt
Loop

根据我在网页上看到的情况,我知道在这个循环中的某个地方 VBE 和 Excel 变得无响应。

希望有帮助...我知道它没有帮助我... Drats。

编辑:只是想我会添加这个。当谈到自动化网页时,在大多数情况下,我不再使用 IE。我发现它要好得多,并且完全避免了异步问题的问题,只需执行帖子并获得自己。可能不是最好的解决方案,具体取决于您要做什么,但如果您仔细查看流量并很好地参数化,它会非常可靠地工作。

最佳答案

经过详尽的搜索,我确定 AJAX 请求,在后台异步运行的 javascript 代码不是我可以以任何方式获取信号的东西。当它完成加载页面时,它似乎确实会触发一些事件,这是我将来想探索的一个选项。但是,出于我的目的,我只是使用了我已经用来填写页面上的表单的相同代码,并让它再次循环遍历每个字段,以在单击提交按钮之前检查值是否仍然正确。这不是一个理想的解决方案,但它是一种解决方法,在这种情况下似乎已经解决了我的问题。

我不确定我的解决方案是否适用于处理这个问题的其他人,但如果它有帮助的话。我认为此问题的解决方法必须基于相关应用程序和网页。

关于internet-explorer - VBA Internet Explorer 等待网页加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19933313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com