IE11 自动化通过 Excel VBA - 表单



这是我原始帖子的第 2 部分。 所以现在登录后,我必须单击两次才能显示我最终尝试抓取的信息。 我似乎无法找出向下钻取以点击工作的正确方法。 它都埋藏在一个形式中。 第一张图片显示了表单结构。 第二张图片显示了我尝试访问主管跨度下方的"当前情况"链接的所有代码。 我不得不使用以下方法(正如您在上一篇文章中看到的那样(让IE保持连接,因此不确定这是否有任何影响:

Dim objIE As Object

Set objIE = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")

为了自动单击"当前情况"选项卡,我尝试了以下方法,但没有运气(带和不带 0(

objIE.document.getElementById("1617")(0).Click

除了得到答案之外,我对接受教育更感兴趣。 有没有一种方法可以向下钻取表单中的信息? 我的印象是网页的所有元素都是在加载过程中拉入的。 那么,这难道不是我对网页自动化的最低限度理解中的一个元素吗?

请注意,我必须单击"主管"才能显示其下方的树。 提前感谢您的帮助!

更新:好吧,我认为这是一个重大疏忽。根据我之前的帖子,登录功能完美。但是一旦登录,就会创建一个新窗口。所以我相信这就是挑战,对吧?它找不到这些 ID 或元素中的任何一个,因为它正在查看原始 IE 对象,而不是新窗口。那么如何让它激活/访问新窗口呢?对不起,我之前错过了!

方法getElementById返回单个元素,而不是集合,这与例如getElementsByClassName不同(查看方法名称中的"元素"与"元素"(。因此,不应使用(0)或任何其他集合索引。

正确的语法是:

objIE.document.getElementById("1617").Click

对于弹出窗口,请尝试以下操作:

Dim wURL As String
Dim myWindow As Object
For Each myWindow In CreateObject("Shell.Application").Windows
wURL = myWindow.LocationURL
If InStr(wURL, "constant_part_of_popup_window_link") <> 0 Then
'do stuff
myWindow.Quit
Exit For
End if
Next myWindow

要访问 iFrame 中的元素:

myWindow.document.getElementById("frameMainMenu").contentWindow.document.getElementById("1617").Click

最新更新