以下是我试图从中获取的HTML文档的一部分:
<div id="abc" class="outer">
::before
<div class="inner"></div>
::after
</div>
我尝试使用
获取此代码段的innerHTMLSet Elements = Document.getElementsByClassName("outer")
MsgBox Elements(0).innerHTML
消息框中弹出的唯一内容是(不带引号):
"<div class="inner"></div>"
innerHTML似乎忽略了CSS伪元素之前的:: before和::之后。有没有办法抓住这些或确定它们是否在那里?
我问的原因是,当我尝试自动化的应用程序处于加载状态时,:: before和:: after元素就在那里。一旦它处于加载状态,这些元素就会消失。
谢谢
答案 0 :(得分:1)
我明白了。我最终使用了一种不同于尝试查找:: before和:: after的方法。
注意: 我观察了HTML文档在搜索过程中如何变化,并注意到当应用程序进入或退出加载状态时,我上面包含的HTML片段的父代已更改。
<div id="snippetParent" class="overlay" style="width: 100%; height: 100%; top: 0px; left: 0px; position: absolute; display: block;">
<div id="abc" class="outer">
<div class="inner"></div>
</div>
</div>
&#34; Style&#34;属性&#34;显示&#34;属性更改为&#34;显示:块&#34;加载时,改为&#34;显示:无&#34;当它没有加载。
如果应用程序加载时间太长,还会出现一个弹出窗口(弹出ID为&#34; popup&#34;出于此问题的目的)。这个弹出窗口使上面提到的样式从块到无。我必须在while循环中包含弹出窗口出现的条件。
&#34; good&#34; boolean为false,直到任何加载指示消失。然后它变为真,因此退出while循环。
这是我的代码:
Do While good = False
For Each tx In Split(Document.getElementById("snippetParent").Style.cssText, "; ")
If tx = "display: block" Then
good = False
UpdateBrowser BB:=Browser, waitSeconds:="02"
ElseIf tx = "display: none" Then
txtDocument = ""
On Error Resume Next
txtDocument = Document.getElementById("popup").innerHTML
If txtDocument = "<b>Retrieving Data...</b>" Then
Beep
UpdateBrowser BB:=Browser, waitSeconds:="02"
Else
good = True
End If
Else
'Not display
End If
Next tx
Loop