通过Excel VBA实现IE11自动化 - 表单

时间:2018-05-28 02:32:21

标签: html excel vba excel-vba internet-explorer-11

这是我原帖here的第2部分。所以现在登录后,我必须点击两下才能显示我最终想要抓取的信息。我似乎无法找到正确的方法来深入了解点击工作。它全部埋藏在一种形式中。第一张图片显示form structure。第二张图显示all of the code我正在尝试进入Supervisor跨度下面的Current Situation链接。我不得不使用以下内容(正如您在上一篇文章中看到的那样)让IE保持连接,因此不确定是否会产生任何影响:

Dim objIE As Object

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

为了尝试自动化Current Situation选项卡,我尝试了以下但没有运气(有和没有0)

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

除了得到答案之外,我更感兴趣的是接受教育。有没有方法深入研究表单中的信息?我的印象是网页的所有元素都在加载过程中被拉入。那么这对我对网页自动化的最低限度理解并不是真正的元素吗?

作为一个注释,我必须单击Supervisor才能显示它下面的树。在此先感谢您的帮助!

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

1 个答案:

答案 0 :(得分:1)

方法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