XPath 选择下拉列表中的第一个元素

Posted

技术标签:

【中文标题】XPath 选择下拉列表中的第一个元素【英文标题】:XPath to select first element in a dropdown list 【发布时间】:2016-12-21 13:08:38 【问题描述】:

我正在处理的下拉列表不是静态的。当前下拉列表中的值为:Lock1、Lock2、Lock3、Lock4。 由于这些是动态值,我想根据它在下拉列表中的位置编写我自己的 xpath。 我想选择 Lock1。

<div class="dropdown open">
    <button class="btn btn-white dropdown-toggle btn-block" type="button">
        <!-- react-text: 62 -->
        Lock1
        <!-- /react-text -->
        <span class="glyphicon glyphicon-chevron-up"/>
    </button>
    <div class="dropdown-menu">
        <div class="m-l-xs m-r-xs">
            <div class="search">
                <input type="text" placeholder="search"/>
                <i class="icon icon-search"/>
            </div>
        </div>
        <ul class="dropdown-list">
            <li class="active">
                <a title="Lock1">Lock1</a>
            </li>
            <li class="">
                <a title="Lock2">Lock2</a>
            </li>
            <li class="">
                <a title="Lock3">Lock3</a>
            </li>
            <li class="">
                <a title="Lock4">Lock4</a>
            </li>
        </ul>
    </div>
</div>

【问题讨论】:

给定这个输入示例,您请求的输出是什么?稍微不同的输入怎么样? 我想用 Xpath 选择 Lock1。 @renato vitolo 【参考方案1】:
(//ul[@class='dropdown-list']/li[@class='active']/a)[1]

(//div[@class='dropdown-menu']/ul[@class='dropdown-list']/li[@class='active']/a)[1]

参考资料:

XPath Get first element of subset

XPath: Select first element with a specific attribute

【讨论】:

当我使用你的 xpaths 时,我收到一个异常:无法定位元素。但是,我已将您给定的路径编辑为: (//ul[@class='dropdown-list']/li[1])[1] 并且此 xpath 有效.. 感谢您的帮助 可能会引发异常,因为您的应用程序中没有一个li 元素具有class="active"【参考方案2】:

//ul/li[1] 返回Lock1,这就是你想要的吗?

您可能希望更具体地使用 ulli 类,但我会留给您。

PS:下次您请别人为您编写 XPath 表达式时,请确保您的输入有效(您缺少结束 &lt;/div&gt;)。

【讨论】:

我已经编辑了代码.. 但是,//ul/li[1] 没有选择 Lock1 什么代码?我确实将您的示例发布到在线 XPath 测试工具中,修复了标记并编写了该表达式来测试它。

以上是关于XPath 选择下拉列表中的第一个元素的主要内容,如果未能解决你的问题,请参考以下文章

确定在 phptravels.net 站点中选择下拉列表的 xpath

根据jquery中的第一个下拉列表禁用下拉列表

多个下拉列表的 xPath 命名映射

级联选择/下拉菜单

如何根据使用 jQuery/AJAX 和 PHP/MySQL 选择的第一个下拉列表填充第二个下拉列表?

ReactJS onClick 不适用于菜单中的第一个元素