首页 > 解决方案 > 如何通过 VBA 单击 jQuery 自动完成生成的列表?

问题描述

我正在尝试单击由 jQuery/autocomplete 通过 VBA 生成的浏览器中的列表。

我试过使用“.click”功能,但它仍然不会点击列表。我也尝试使用“selectedindex”,但它只返回错误。我还尝试了使用 onchange 的“fireevent”。我没有错误,但它仍然没有点击列表。

这里有类似的线程:

VBA / HTML / jQuery 选择自动完成 - 在列表中选择

如何使用 vba 填写 html 自动完成字段?

但是提供的解决方案什么也没做。我还是 javascript 的新手,所以也许我做错了什么。

这就是我目前拥有的:
这是我试图处理的文本框(“Konto”)

在文本框中输入时出现的下拉列表

当下拉列表出现时,代码底部会生成一个新的动态元素

这是我目前正在处理的代码:

Main.ie.document.getElementsByTagName("input")(12).Value = Sheets("Visma").Cells(2, 5).Value Main.ie.document.getElementsByTagName("input")(12).Focus
Set liste = Main.ie.document.getElementsByClassName("wicket-aa")(0).getElementsByTagName("li")
Do While liste.Length = 0: DoEvents: Loop
Debug.Print liste(0).innerHTML
liste(0).Click

我无法定位 ID,因为它们会在每个新会话中生成新的 ID。

当我运行代码时,输​​入被填充并出现下拉列表,但它不会单击该列表。当我打印变量时,它确实显示了我想要单击的项目。但是“liste(0).click”似乎没有做任何事情。

这是文本框的 HTML 代码:

<div class="form-group costCentreElement">
    <label><a href="javascript:;" tabindex="0" id="id20">Konto</a></label>
            <input type="text" class="form-control ccDimensionField" maxlength="12" onkeypress="return disableEnterKey(event)" value="" name="kontLinjer:1:konteringLinjePanel:konteringForm:kPanel:form:wmc:kbInputView:0:kbInput" id="id21" autocomplete="off" placeholder="Konto" onfocus="select();" tabindex="1">

我相信这是在文本框中键入时生成下拉列表的自动完成代码:

<div class="wicket-aa-container" id="id21-autocomplete-container"     style="overflow: auto; position: absolute; margin: 0px; padding: 0px; width:  auto; left: 217px; top: 688px; display: none;">
    <div id="id21-autocomplete" class="wicket-aa">
        <ul>
            <li textvalue="4330">4330 - KARTONGER/ESKER</li>
        </ul>
    </div>
</div>

标签: javascriptjqueryhtmlvbaautocomplete

解决方案


推荐阅读