如何使用Excel vba从javascript/CSS网站选择元素?

如何使用Excel vba从javascript/CSS网站选择元素?,javascript,css,excel,vba,Javascript,Css,Excel,Vba,最近,我一直在编写一个代码来填充用JavaScript/CSS制作的网页,但是,当尝试填充任何下拉/弹出菜单值时,尽管文本被写入字段,但元素没有被选中,这使得它无效 我通过查找其elementID来填充字段,然后将值发送进来 Dim ie As Object Set ie = CreateObject("InternetExplorer.Application") ie.document.getElementByID(CRMPE(i)).Value = CampoPE(i

最近,我一直在编写一个代码来填充用JavaScript/CSS制作的网页,但是,当尝试填充任何下拉/弹出菜单值时,尽管文本被写入字段,但元素没有被选中,这使得它无效

我通过查找其
elementID
来填充字段,然后将值发送进来

    Dim ie As Object
    Set ie = CreateObject("InternetExplorer.Application")
    ie.document.getElementByID(CRMPE(i)).Value = CampoPE(i)
    Dim id As String

    id="_FOpt1:_FOr1:0:_FOSrCRM_CUSTOM_CARD_EMRQUOTE_C:0:_FOTsr1:0:ExtGen_pt11:ExtGen_cr1:0:ExtGen_ptCr11:ExtGen_attr_Tier_c_EMRQuote_c1::pop"   
其中
CRMPE
包含字段ID,
CampoPE
包含要粘贴到网页上的值

对于我尝试的下拉列表:

    ie.document.getElementByID(id).Focus
    ie.document.getElementByID(id).selectedIndex = 1
    ie.document.getElementByID(id).FireEvent
    ie.document.getElementByID(id)(1).Click
    ie.document.getElementByID(id).FireEvent ("onchange")
    ie.document.getElementsByTagName(id).querySelector("Li[_adfiv=3]").Click
这些都不起作用

我认为主要的问题是页面的结构

下面是CSS代码:

<ul class="x1qu" id="_FOpt1:_FOr1:0:_FOSrCRM_CUSTOM_CARD_EMRQUOTE_C:0:_FOTsr1:0:ExtGen_pt11:ExtGen_cr1:0:ExtGen_ptCr11:ExtGen_attr_Tier_c_EMRQuote_c1::pop"><li id="_FOpt1:_FOr1:0:_FOSrCRM_CUSTOM_CARD_EMRQUOTE_C:0:_FOTsr1:0:ExtGen_pt11:ExtGen_cr1:0:ExtGen_ptCr11:ExtGen_attr_Tier_c_EMRQuote_c1::sp" class="x1qz" style="width: 264px;"></li><li class="x1r3" _adfiv=""></li><li class="x1r3" _adfiv="NO_VALUE">No Value</li><li class="x1r3" _adfiv="0">0</li><li class="x1r3 p_AFSelected" _adfiv="1">1</li><li class="x1r3" _adfiv="2">2</li><li class="x1r3" _adfiv="3">3</li><li class="x1r3" _adfiv="4">4</li><li class="x1r3" _adfiv="5">5</li></ul>
<li id="_FOpt1:_FOr1:0:_FOSrCRM_CUSTOM_CARD_EMRQUOTE_C:0:_FOTsr1:0:ExtGen_pt11:ExtGen_cr1:0:ExtGen_ptCr11:ExtGen_attr_Tier_c_EMRQuote_c1::sp" class="x1qz" style="width: 264px;"></li>
<li class="x1r3" _adfiv=""></li>
<li class="x1r3" _adfiv="NO_VALUE">No Value</li>
<li class="x1r3" _adfiv="0">0</li>
<li class="x1r3 p_AFSelected" _adfiv="1">1</li>
<li class="x1r3" _adfiv="2">2</li>
<li class="x1r3" _adfiv="3">3</li>
(2)C:0:0:0:0:0:1:0:1:0:1:0:0:0:1:0:1:0:1:0:1:0:1:0:1:0:1:0:1:0:1:0:1:0:1:0:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:QUOTE_c1::sp“class=”x1qz“style=”宽度:264px>
  • 无值
  • 无值
  • 0
  • 1
  • 2
  • 3
  • 如图所示,所选元素已将
    p\u AFSelected
    添加到其类名中

    我用
    .classname=“x1r3 p_AFSelected”
    尝试了上述所有代码,但没有成功

    因此,主要的问题是,如何通过单击或更改其
    classname
    添加
    p\u AFSelected
    来选择其中一个值


    欢迎任何其他可行的解决方案。

    您可以尝试使用attribute=value css选择器来选择目标元素

    ie.document.querySelector("[_adfiv='2']").click
    
    和(不确定您的html是否正确添加到问题中)


    它现在工作得很好!非常感谢你的帮助!
    ie.document.querySelectorAll("[_adfiv='2']").item(1).click