xpath语法

1. 基本路径表达式

node

选取当前节点的所有子节点(包括元素、文本、属性等)。

bookstore/book

//node

从任意位置选取节点(全局搜索)。

//book

.

选取当前节点。

.

..

选取当前节点的父节点。

book/..

@attribute

选取属性节点(@后接属性名)。

book/@category

2. 谓语(Predicates)

用于筛选节点,用方括号 [] 包裹条件:

bookstore/book[1]

选取第一个 <book>节点(XPath 索引从 1 开始)。

bookstore/book[last()]

选取最后一个 <book> 节点。

bookstore/book[price>35]

选取 <price> 元素值大于 35 的所有 <book>节点。

//book[@category='IT']

选取所有 category属性为 'IT'<book>节点。

//book[contains(@id, 'prod')]

选取 id属性包含 'prod'的所有 <book>节点。

3. 通配符

*

匹配任意元素节点。

bookstore/*

@*

匹配任意属性节点。

book/@*

node()

匹配任意类型的节点(元素、文本、注释等)。

//node()

4. 轴(Axes)

用于选取相对于当前节点的特定节点:

child

选取当前节点的所有子节点(默认轴,可省略)。

book/child::title

parent

选取当前节点的父节点。

title/parent::book

descendant

选取当前节点的所有后代节点(子节点、孙节点等)。

bookstore/descendant::title

ancestor

选取当前节点的所有祖先节点(父节点、祖父节点等)。

title/ancestor::bookstore

following-sibling

选取当前节点之后的所有同级节点。

book/following-sibling::book

preceding-sibling

选取当前节点之前的所有同级节点。

book/preceding-sibling::book

5. 运算符

and

逻辑与

//book[@price>20 and @price<50]

or

逻辑或

//book[@category='IT' or @category='Science']

+

加法

//book[price+tax>100]

=

等于

//book[@id=123]

!=

不等于

//book[@category!='IT']

实战示例

假设XML结构如下:

<bookstore>
  <book category="IT">
    <title lang="en">Java Programming</title>
    <price>49.99</price>
  </book>
  <book category="Science">
    <title lang="zh">量子物理导论</title>
    <price>69.99</price>
  </book>
</bookstore>

//book/title

所有 <title>节点(Java Programming、量子物理导论)。

//book[@category='IT']/price

类别为 IT 的书籍的 <price> 节点(49.99)。

//title[contains(text(), 'Java')]

文本包含 Java<title>节点。

//book[price>50]/title

价格超过50的书籍的 <title>节点(量子物理导论)。

总结

XPath 是定位 XML/HTML 节点的强大工具,核心语法可概括为:

  1. 路径选择/(子节点)、//(任意位置)、.(当前节点)、..(父节点)。
  2. 条件筛选:用 [] 加谓语(如 [position()=1][@attr='value'])。
  3. 轴与通配符:处理复杂关系(如 following-sibling)和模糊匹配(*)。

面试时可举例:“若要定位淘宝商品列表中价格大于100元的商品名称,可用 //div[@class='item']/span[price>100]/name。”

全部评论
太卷了白薯哥
点赞 回复 分享
发布于 06-19 17:00 广东
佬你们自动化用的技术栈有哪些?
点赞 回复 分享
发布于 06-18 10:27 广东

相关推荐

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;二月末第一段实习离职,当时没想那么多,又找了一家小公司,也没有暑期实习的概念,但是在公司干的也不咋开心,看着周围个个上岸大厂,而且也不怎么喜欢当时的业务,压力是真的拉满了。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;后面骑驴找马,5月多的时候拿到了腾讯云智的暑期,虽然是子公司,但是怎么着也是腾讯云。也感谢云智给了我跑路的勇气,本来是打算干到6月17号,然后考完试就飞西安,提了离职之后,因为手上的活排期肯定来不及,也没有太多其他的,leader就说可以早点走,然后想着还早,又多投了几个,大部分都没回应。在家看了几天八股,先是拿到了一家小公司的offer,在深圳,其实挺心动的,搞ai出海产品,一个月折合下来有7k,有转正机会。但是还是想上一个title秋招才有更大的底气,就拒了继续面。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;面了字节和滴滴。字节一面觉得还行,二面没想到是问以前没答出来的(第三战字节了),明明面试前一天才看的,又忘了,虽然二面结果还没出,但是应该凉了😭滴滴一面因为操作系统不行,被拷打了很久,以为凉透了结果被捞了,二面就偏向聊天了,过了两天offer,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第一次面大厂就是滴滴,三战滴滴了,最后进滴滴也算是有头有尾了。这个组很核,要学好多东西,相信自己能抗住压力吧&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;牛油们虽然快六月了,但是也别放弃,最近大厂机会多了很多,大部分也都有转正机会,而且流程都很快,周五一面周一二面周三offer,有个同学更夸张,周一一面周二二面半小时后口头oc。而且大家别不好意思,有机会要争取,我最开始拒了面试,但是又一看这个组太想要了,重新打电话舔回面试。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;广东人的第一次北漂,滴滴工资本科不高,不知道能不能独立存活&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
点赞 评论 收藏
分享
24分钟1.自我介绍2.黑盒测试用例设计方法3.运用刚才的测试方法对手机端淘宝购物车结算页面进行测试4.测试流程5.需求文档没有标明边界值,怎么确定边界值,确定边界值后怎么测6.你们公司自动化测试是测业务主流程还是新需求反问:不足之处答:问答问题前思考3s再答,针对提问再答
一笑而过2222:边:边界值分析法(处理输入边界) 类:等价类划分法(划分有效 / 无效输入) 定:判定表法(多条件组合的逻辑判定) 因:因果图法(分析输入输出的因果关系) 迁:状态迁移法(覆盖系统状态转换路径) 场:场景法(模拟端到端业务流程) 正:正交试验法(多因素组合的测试优化) 错:错误推测法(基于经验推测潜在漏洞) 记忆逻辑链(按测试场景优先级排序) 先处理明确输入:边界值 + 等价类(边类) 再处理条件组合:判定表 + 因果图(定因) 接着处理状态与流程:状态迁移 + 场景法(迁场) 最后优化多因素与补漏:正交试验 + 错误推测(正错)
查看6道真题和解析
点赞 评论 收藏
分享
评论
3
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务