VBA GetElementsByClassName 收到错误 5002
VBA GetElementsByClassName gets error 5002
我第一次问问题所以我们开始吧..
我在 VBA 方面有一些经验,但现在我被要求为我在 HTML 中阅读和研究的内容做一些网络抓取..是不是我遇到了无法解决的问题。
我需要做的事情真的没有困难.. 只是让一些元素像点击按钮或输入表单自动完成但是这个是我无法访问的:
<div class="dojoPopupMenu2" style="left: 31px; top: 293px; z-index: 1001;" dojoattachpoint="containerNode">
<ul dojoattachpoint="containerNode">
<li class="dojoMenuItem2 " dojoattachevent="onMouseOver: onHover; onMouseOut: onUnhover; onclick: _onclick; onKey:onKey;" dojoinsertionindex="0"><span tabindex="-1" class="dojoMenuItem2Label">1</span></li>
<li class="dojoMenuItem2 " dojoattachevent="onMouseOver: onHover; onMouseOut: onUnhover; onclick: _onclick; onKey:onKey;" dojoinsertionindex="1"><span tabindex="-1" class="dojoMenuItem2Label">2</span></li>
<li class="dojoMenuItem2 " dojoattachevent="onMouseOver: onHover; onMouseOut: onUnhover; onclick: _onclick; onKey:onKey;" dojoinsertionindex="2"><span tabindex="-1" class="dojoMenuItem2Label">3</span></li>
<li class="dojoMenuItem2" dojoattachevent="onMouseOver: onHover; onMouseOut: onUnhover; onclick: _onclick; onKey:onKey;" dojoinsertionindex="3"><span tabindex="-1" class="dojoMenuItem2Label">4</span></li>
<li class="dojoMenuItem2" dojoattachevent="onMouseOver: onHover; onMouseOut: onUnhover; onclick: _onclick; onKey:onKey;" dojoinsertionindex=`enter code here`"4"><span tabindex="-1" class="dojoMenuItem2Label">5</span>
</li>
</ul>
</div>
有一个名为“添加项目”的前一个按钮,单击该按钮后会出现一个包含数字 1 到 5 的下拉列表(上面的代码),这就是我需要 select.. 这些数字取决于一些简单的条件
我已经尝试过这些选项,但 none 似乎有效
Dim ieApp As Object
Dim ieDoc As Object
Dim ieEl As HTMLDivElement
Dim ieEls As HTMLObjectElement
Dim direccion As String
Set ieApp = CreateObject("InternetExplorer.Application")
With ieApp
For Each element In .document.getElementsByTagName("div") 'Tried with the tag "li" as well
if element.classname = "dojoMenuItem2" Then
'set a variable with the number 1 to 5 from the list (depending on other condition)
end if
Next
End With
'also tried this
Dim additems as HTMLDivElement
Set additems = ieDoc.GetElementsByClassName("dojoMenuItem2")(0)
'this gets Automate error
'also tried this
Dim additems as HTMLDivElement
Set additems = ieDoc.GetElementsByClassName("dojoPopupMenu2")(0)
'this gets Automate error
似乎没有任何效果,所以我不知道我没有看到什么。
谢谢!
您是否尝试应用 CSS 属性选择器?
ieApp.document.querySelectorAll("[dojoinsertionindex]")
属性选择器 [dojoinsertionindex]
将 return 所有具有属性 [dojoinsertionindex]
的元素。
这个 return 是一个 nodeList
你可以索引的。
或循环长度为:
Dim aNodeList As Object, i As Long
Set aNodeList = ie.document.querySelectorAll("[dojoinsertionindex]")
For i = 0 To aNodeList.Length-1
Debug.Print aNodeList.item(i).innerText '< === as check
Next i
单击一个粒子索引(从 0 开始为 1)
aNodeList.item(0).Click
CSS 选择器在您的 HTML 样本上:
我第一次问问题所以我们开始吧..
我在 VBA 方面有一些经验,但现在我被要求为我在 HTML 中阅读和研究的内容做一些网络抓取..是不是我遇到了无法解决的问题。
我需要做的事情真的没有困难.. 只是让一些元素像点击按钮或输入表单自动完成但是这个是我无法访问的:
<div class="dojoPopupMenu2" style="left: 31px; top: 293px; z-index: 1001;" dojoattachpoint="containerNode">
<ul dojoattachpoint="containerNode">
<li class="dojoMenuItem2 " dojoattachevent="onMouseOver: onHover; onMouseOut: onUnhover; onclick: _onclick; onKey:onKey;" dojoinsertionindex="0"><span tabindex="-1" class="dojoMenuItem2Label">1</span></li>
<li class="dojoMenuItem2 " dojoattachevent="onMouseOver: onHover; onMouseOut: onUnhover; onclick: _onclick; onKey:onKey;" dojoinsertionindex="1"><span tabindex="-1" class="dojoMenuItem2Label">2</span></li>
<li class="dojoMenuItem2 " dojoattachevent="onMouseOver: onHover; onMouseOut: onUnhover; onclick: _onclick; onKey:onKey;" dojoinsertionindex="2"><span tabindex="-1" class="dojoMenuItem2Label">3</span></li>
<li class="dojoMenuItem2" dojoattachevent="onMouseOver: onHover; onMouseOut: onUnhover; onclick: _onclick; onKey:onKey;" dojoinsertionindex="3"><span tabindex="-1" class="dojoMenuItem2Label">4</span></li>
<li class="dojoMenuItem2" dojoattachevent="onMouseOver: onHover; onMouseOut: onUnhover; onclick: _onclick; onKey:onKey;" dojoinsertionindex=`enter code here`"4"><span tabindex="-1" class="dojoMenuItem2Label">5</span>
</li>
</ul>
</div>
有一个名为“添加项目”的前一个按钮,单击该按钮后会出现一个包含数字 1 到 5 的下拉列表(上面的代码),这就是我需要 select.. 这些数字取决于一些简单的条件
我已经尝试过这些选项,但 none 似乎有效
Dim ieApp As Object
Dim ieDoc As Object
Dim ieEl As HTMLDivElement
Dim ieEls As HTMLObjectElement
Dim direccion As String
Set ieApp = CreateObject("InternetExplorer.Application")
With ieApp
For Each element In .document.getElementsByTagName("div") 'Tried with the tag "li" as well
if element.classname = "dojoMenuItem2" Then
'set a variable with the number 1 to 5 from the list (depending on other condition)
end if
Next
End With
'also tried this
Dim additems as HTMLDivElement
Set additems = ieDoc.GetElementsByClassName("dojoMenuItem2")(0)
'this gets Automate error
'also tried this
Dim additems as HTMLDivElement
Set additems = ieDoc.GetElementsByClassName("dojoPopupMenu2")(0)
'this gets Automate error
似乎没有任何效果,所以我不知道我没有看到什么。
谢谢!
您是否尝试应用 CSS 属性选择器?
ieApp.document.querySelectorAll("[dojoinsertionindex]")
属性选择器 [dojoinsertionindex]
将 return 所有具有属性 [dojoinsertionindex]
的元素。
这个 return 是一个 nodeList
你可以索引的。
或循环长度为:
Dim aNodeList As Object, i As Long
Set aNodeList = ie.document.querySelectorAll("[dojoinsertionindex]")
For i = 0 To aNodeList.Length-1
Debug.Print aNodeList.item(i).innerText '< === as check
Next i
单击一个粒子索引(从 0 开始为 1)
aNodeList.item(0).Click
CSS 选择器在您的 HTML 样本上: