gpt4 book ai didi

java - 将整数放入 xpath 的引号中

转载 作者:行者123 更新时间:2023-11-29 04:11:37 25 4
gpt4 key购买 nike

我正在调试别人的 Selenium 代码。他们有一个类似于 td['6'] 的 xpath。这是失败的。我使用直觉并将其更改为 td[6] 来修复它。然而,td['6'] 并没有像我想象的那样报错。它找到了一个元素,但与没有引号的元素完全不同。

所以这让我开始思考,将数字放在引号中(例如 td['6'])究竟意味着什么?

最佳答案

XPath 1.0 规范指出“td”是(例如子节点)和节点测试(标签名称 TD),方括号内的所有内容都是predicate-expression它要么被评估为 boolean 值(真或假),要么在特殊情况下被评估为节点集的位置过滤器的数字:

if the result is not a number, then the result will be converted as if by a call to the boolean function. Thus a location path para[3] is equivalent to para[position()=3].

举例说明

以下 3 个 XPath 谓词 案例是通过评估来自此 sample table (w3schools) 的输入来解释的:

+-------------------------------+-------------------+---------+
| Company | Contact | Country |
+-------------------------------+-------------------+---------+
| Alfreds Futterkiste | Maria Anders | Germany |
| Centro comercial Moctezuma | Francisco Chang | Mexico |
| Ernst Handel | Roland Mendel | Austria |
| Island Trading | Helen Bennett | UK |
| Laughing Bacchus Winecellars | Yoshi Tannamuri | Canada |
| Magazzini Alimentari Riuniti | Giovanni Rovelli | Italy |
+-------------------------------+-------------------+---------+

案例 1:数字作为谓词

td[6] 选择第 6 个子表数据元素,因为数字 6 被评估为谓词 position()=6 的简写.

示例:选择第三列的每个单元格

XPath: //td[3]

输出:

  <td>Germany</td>  
<td>Mexico</td>
<td>Austria</td>
<td>UK</td>
<td>Canada</td>
<td>Italy</td>

尝试 online demo

案例 2:引用字符串作为谓词

td['6'] 选择每个子表数据元素,因为字符串 '6' 不为空或具有非零长度,因此计算结果为true(参见 boolean-conversion)。因此,TD 元素的节点集不会被进一步过滤(因为谓词始终为真)。

示例:选择每个单元格(因为字符串谓词始终为真)

XPath: //td['3']

输出:

  <td>Alfreds Futterkiste</td>  
<td>Maria Anders</td>
<td>Germany</td>
<td>Centro comercial Moctezuma</td>
<td>Francisco Chang</td>
<td>Mexico</td>
<td>Ernst Handel</td>
<td>Roland Mendel</td>
<td>Austria</td>
<td>Island Trading</td>
<td>Helen Bennett</td>
<td>UK</td>
<td>Laughing Bacchus Winecellars</td>
<td>Yoshi Tannamuri</td>
<td>Canada</td>
<td>Magazzini Alimentari Riuniti</td>
<td>Giovanni Rovelli</td>
<td>Italy</td>

尝试 online demo

案例 3:条件谓词测试元素

这是 predicate expression 的真正好处,它允许您测试元素,例如查找所有具有 colspan 属性的合并表格单元格:

td[@colspan]

查看这个复杂的用例: Xpath expression with multiple predicates

示例:选择内容以“A”开头的所有单元格

XPath: //tr/td[starts-with(., 'A')]

输出:

  <td>Alfreds Futterkiste</td>  
<td>Austria</td>

尝试 online demo

关于java - 将整数放入 xpath 的引号中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54773317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com