我正在研究VBA算法,以便自动与网站进行交互。自动化工作得很好,除了一个小问题,这引起了我很多麻烦(我对这个网络自动化编程也相对较新)。这是一个内部网站,所以我无法发布链接,但我会尝试尽可能透明。
以下是我的工作:
我正在通过GetElementByID("ID").value = "Name"
将网站上的名称输入到元素中。然后网站需要时间来处理该信息,并且在此部分完成之前不允许我将信息输入到另一个元素中。当网站正在处理信息时,弹出窗口基本上冻结了网站。
以下是我的问题:
网站处理信息所需的时间从2秒到2分钟不等。所以我想弄清楚如何在处理完成后在最短的时间内完成我的程序。
我尝试了什么:
1)application.wait
;相当明显,但最不优雅的方式并不是非常可靠,因为处理时间差别很大。
2)IE.ReadyState = 4
或IE.busy
;不起作用,因为在完成此处理时网站已满载。
3)我构建了一个基本上循环的函数,而元素的innerhtml不是名字。我认为这将是一个很酷的解决方案,但问题是innerhtml更改有时已经完成,而弹出窗口仍然存在。 (该功能适用于代码的其他部分)。
4)我构建了一个循环的函数,直到它无法通过GetElementByID("waitingPopUp")
找到弹出窗口。没有用,因为元素在技术上总是在那里。
我认为应该有效:
所以这个弹出这个主要问题。唯一的事情是,当弹出窗口可见时,状态位于aria-hidden="false"
,否则为aria-hidden="true"
。因此,我的问题是,是否有办法通过VBA访问此咏叹调状态?理想情况下,我希望构建一个函数,并且在元素(" popup")处于aria-hidden="false"
"上时循环。#34;循环。这可能吗?
此致