首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将整数放入xpath的引号中

将整数放入xpath的引号中
EN

Stack Overflow用户
提问于 2019-02-19 19:07:49
回答 2查看 159关注 0票数 1

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

这让我开始思考,把这个数字放在引号里是什么意思,比如td['6']

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-19 20:54:29

td[predicate]的意思是:

返回谓词为true的第一个true节点。

每个非空字符串返回true,因此td['6']将选择DOM中的第一个td节点。

td[6]td[position()=6]表达式的缩写,意思是:

返回td,这是td类型的第六个子类型。“

票数 0
EN

Stack Overflow用户

发布于 2019-02-19 20:16:13

XPath 1.0规范指出,“TD”是(例如,子)和节点-测试(标记名TD),方括号内的所有内容都是谓词表达式,它要么被计算为布尔(真或假),要么在特殊情况下被计算为节点集的位置筛选器:

如果结果不是数字,则结果将被转换为调用布尔函数。因此,位置路径para3等效于paraposition()=3。

举例说明

下面三个XPath谓词案例通过对来自这个样本表(w3schools)的输入的计算来解释

代码语言:javascript
复制
+-------------------------------+-------------------+---------+
|           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]

输出:

代码语言:javascript
复制
  <td>Germany</td>  
  <td>Mexico</td>  
  <td>Austria</td>  
  <td>UK</td>  
  <td>Canada</td>  
  <td>Italy</td> 

试试在线演示

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

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

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

XPath://td['3']

输出:

代码语言:javascript
复制
  <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> 

试试在线演示

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

这是谓词表达式的真正好处,并允许您对元素进行测试,例如,查找具有colspan属性的所有合并表单元格:

代码语言:javascript
复制
td[@colspan]

参见这个复杂的用例:带有多个谓词的Xpath表达式

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

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

输出:

代码语言:javascript
复制
  <td>Alfreds Futterkiste</td>  
  <td>Austria</td>  

试试在线演示

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54773317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档