selenium教程 —— xpath定位
创始人
2024-11-11 20:36:20

说明:本篇博客基于selenium 4.1.0

selenium-xpath定位

element_xpath = driver.find_element(By.XPATH, 'xpath表达式') 复制代码

xpath定位说明

xpath即为XML路径语言(XML Path Language),是由国际标准化组织W3C指定的,一种用来确定XML文档节点位置的语言

xpath定位优点

1.相较于其他定位方式,可支持更多定位方法,如:布尔逻辑判断、模糊定位等 2.可支持web定位、Android app原生页面定位

xpath定位缺点

1.需要从头到尾解析整个页面,速度较慢

xpath调试方法

方法1:在浏览器开发者模式的elements中,Ctrl+F搜索栏输入xpath表达式 方法2:在浏览器开发者模式的console中,按如下格式可验证表达式

$x("xpath表达式")   # 表达式中存在引号,则使用单引号,'$'可更换为'$$' 复制代码

xpath节点

在xpath中,有七种类型的节点(node):元素、属性、文本、命名空间、处理指令、注释以及文档节点(或称为根节点) 在开始xpath语法前,我们需要简单了解这几种节点:

节点名称说明示例
元素节点网页中的各个标签

...

根节点网页的第一个元素节点网页的根节点通常为...
属性节点标签中的各个属性
...
,id即为div节点的属性
文本节点标签的文本
啦啦啦
,'啦啦啦'即为div节点的文本

xpath语法

xpath使用路径表达式描述目标节点与网页头的关系

绝对路径 & 相对路径

路径表达式有两种结构,分别为:

  • 绝对路径:从根节点/html开始往下,一层层的表示出来直到需要的节点为止。以百度输入框为例,表达式为:
/html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[1] 复制代码
  • 相对路径:从任意节点开始,根据节点描述信息找到需要的节点。同样以百度输入框为例,表达式为:
//input[@id='su'] 复制代码

对比两种表达式,可以发现:

  • 相对路径更简洁,方便阅读
  • 相对路径更稳定,当前端页面有结构变动就容易引起绝对路径发生变化

因此,在项目中几乎都是使用相对路径进行定位

xpath基本表达式

表达式说明示例示例说明
nodename选取此节点的所有子节点html选取根节点的所有子节点
/从根节点选取,或者用来选择子节点/html/body/textarea选择中的所有