javascript - 我如何使用 Excel vba 从 javascript/CSS 网站中选择一个元素?

标签 javascript css excel vba

最近我一直在编写代码来填充用 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>

如图所示,所选元素已将 p_AFSelected 添加到其类名中,

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

所以主要问题是,如何通过单击或更改其 classname 来添加 p_AFSelected 来选择其中一个值?

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

最佳答案

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

ie.document.querySelector("[_adfiv='2']").click

并且(不确定您的 html 是否正确添加到问题中)

ie.document.querySelectorAll("[_adfiv='2']").item(1).click

关于javascript - 我如何使用 Excel vba 从 javascript/CSS 网站中选择一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58330355/

相关文章:

html - Bootstrap 4 使嵌套行填充已使用 flex-grow 填充视口(viewport)高度的父级

html - Div 自动 100% 宽

java - 将 Excel 文件合并到单个工作簿中

python-3.x - 将嵌套字典写入 Excel 工作表

javascript - 多次循环引用对象以将其属性复制到 Javascript/Angularjs 中的其他对象

javascript - D3 错误地处理堆积条形图

javascript - 进行奇特的文件输入时未捕获类型错误

javascript - 使用 Jquery 检索输入值

javascript - 仅使用图标打开日期时间选择器

sql - 将电子表格中的行与数据库中的记录进行比较