html - 即使指定了索引,XPath $x() 函数也会返回数组
问题描述
我正在尝试选择div
包含"month-table_col"
(按月选择)的标签。
...
<div class="month-table">
<div class="month-table_row">
<div class="month-table_col">Jan</div>
<div class="month-table_col">Feb</div>
<div class="month-table_col">Mar</div>
</div>
<div class="month-table_row">
<div class="month-table_col">Apr</div>
<div class="month-table_col">May</div>
<div class="month-table_col">Jun</div>
</div>
<div class="month-table_row">
<div class="month-table_col">Jul</div>
<div class="month-table_col">Aug</div>
<div class="month-table_col">Sep</div>
</div>
<div class="month-table_row">
<div class="month-table_col">Oct</div>
<div class="month-table_col">Nov</div>
<div class="month-table_col">Dec</div>
</div>
</div>
...
这是用于指定div
标签的 XPath 代码,例如,选择div
具有 11 月值的标签。
//div[contains(@class, 'month-table_col') and contains(text(), 'Nov')]
在 Google Chrome 控制台中运行以下命令后,
$x("//div[contains(@class, 'month-table_col') and contains(text(), 'Nov')]")
结果:它返回一个像这样的元素的数组
[div.month-table_col]
0: div.month-table_col
lastIndex:(...)
lastItem:(...)
length: 1
__proto__:Array(0)
即使我尝试将索引指定为 1,它也会返回与上图相同的结果。
$x("//div[contains(@class, 'month-table_col') and contains(text(), 'Nov')][1]")
返回的结果是正确的,但是如果无论如何我可以将元素作为标签,而不是数组结果。
预期结果:
<div class="month-table_col">Nov</div>
解决方案
Chrome DevTools XPath 控制台函数,$x()
始终返回一个数组,即使选择了单个节点,即使没有选择任何节点。
然后,您可以使用 JavaScript 索引来提取任何给定的数组元素。如果 XPath 的结果是单个节点,则追加[0]
以从返回的数组中获取该节点:
$x("//div[contains(@class, 'month-table_col') and contains(text(), 'Nov')]")[0]
提醒: XPath 节点集和序列是从 1 开始的;JavaScript 数组是从 0 开始的。
推荐阅读
- c# - 如何从 Ardruino 服务器获取直接数据并上传到另一个 PC(已安装 SQL)
- java - 如何使用 Java 正确显示 Google Cloud Storage 中的日文字符?
- php - php 错误日志不包含已弃用的消息
- javascript - Sharepoint Online,格式列在 Web 部件中不起作用
- mysql - MySQL 是否有“打印”功能来显示自定义文本输出?
- c# - ASP.NET Core:我想从我对控制器方法的视图中访问复选框(值)列表
- php - XML在PHP中按属性选择数据
- docker - jenkins 作为 docker 容器拒绝连接到 ubuntu 中的 docker 守护进程
- javascript - History.popState() 不适用于 YouTube 导航
- python - Pyspark dataframe isin 函数数据类型转换