04-xpath定位

目录

1. xpath简介

2. 术语简介

   2.1 节点

3. xpath语法

4. 轴语法介绍

5. 实际应用

   5.1. 属性

   5.2 文本

   5.3 层级

   5.4 索引

   5.5 模糊匹配

   5.6 其他函数

   5.7 轴语法使用


1. xpath简介

  • xpath 是一门在 XML 文档中查找信息的语言

2. 术语简介

   2.1 节点

    解释:有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点

<?xml version="1.0" encoding="ISO-8859-1"?>

 <bookstore>
  <book>
     <title lang="en">Harry Potter</title>
     <author>J K. Rowling</author>
     <year>2005</year>
     <price>29.99</price>
   </book>
</bookstore> 


上面的节点例子中

 <bookstore> (文档节点)

 <author>J K. Rowling</author> (元素节点)

 lang="en" (属性节点) 

3. xpath语法

nodename选取此节点的所有子节点。
/从根节点选取。
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
.选取当前节点。
..选取当前节点的父节点。
@选取属性。

4. 轴语法介绍

ancestor选取当前节点的所有先辈(父、祖父等)。
ancestor-or-self选取当前节点的所有先辈(父、祖父等)以及当前节点本身。
attribute选取当前节点的所有属性。
child选取当前节点的所有子元素。
descendant选取当前节点的所有后代元素(子、孙等)。
descendant-or-self选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
following选取文档中当前节点的结束标签之后的所有节点。
namespace选取当前节点的所有命名空间节点。
parent选取当前节点的父节点。
preceding选取文档中当前节点的开始标签之前的所有节点。
preceding-sibling选取当前节点之前的所有同级节点。
self选取当前节点。

5. 实际应用

  • 使用:F12打开开发者工具 -->  Ctrl + F 打开搜索框

   5.1. 属性

  • id、name、class
# id属性
driver.find_element_by_xpath("//*[@id='kw']")

# name 属性
driver.find_element_by_xpath("//*[@name='wd']")

# clas 属性
driver.find_element_by_xpath("//*[@class='s_ipt']")

   

  • 其他属性
# autocomplete 属性
driver.find_element_by_xpath("//*[@autocomplete='off']")

   5.2 文本

  • //*[text()='新闻']

   5.3 层级

  • //span[@class='bg s_ipt_wr quickdelete-wrap']/input

   5.4 索引

  • //span[@class='bg s_ipt_wr quickdelete-wrap']/span[2]

   5.5 模糊匹配

   starts-with :以**开头

  • //*[starts-with(@class,'s_i')]

   contains:包含

  • //*[contains(text(),'新')]
  • //*[contains(@id,'kw')]

   

   5.6 其他函数

    normalize-space:去掉前后空格

  • //*[normalize-space(text())='我已阅读并同意']

   5.7 轴语法使用

    following-sibling :当前节点后面的兄弟节点

  • //*[@id='kw']/following-sibling::a

    preceding-sibling :当前节点前面的兄弟节点

  • //*[@id='kw']/preceding-sibling::span

   parent:当前节点的父节点

  • //*[@id='kw']/parent::span

    ancestor:当前节点的先辈节点(父、祖父等)

  • //*[@id='kw']/ancestor::span

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习de测试小白

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值