这是我原帖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对象,而不是新窗口。那么如何让它激活/访问新窗口?对不起,我早些时候错过了!
答案 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