帖子
帖子
用户
博客
课程
显示全部楼层

[浏览器操作] 【官方】【新手必看】常用Xpath语法举例

[复制链接]
发表于 2022-10-19 14:49:18
本帖最后由 RPA智多星-技术支持 于 2022-10-21 13:48 编辑

一个HTML(网页)元素由标签、属性名、属性值三部分组成,如下图所示。
XPath定义
XPath是一个路径,可以用于定位HTML元素。
XPath的绝对路径和相对路径
l  绝对路径:以单斜杠“/”开头,表示了从html根元素到当前定位元素的一个完整路径。例如:/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input
l  相对路径:以双斜杠“//”开头,可以是定位元素的一个最短路径,例如://input[@id=“kw”]
绝对路径因为路径过长,往往会因页面微调而不稳定;而相对路径则相对更稳定一些
因此,在使用时我们优先使用相对路径
快速获取元素XPath
XPath语法说明
  
场景
  
XPath语法
Xpath举例
使用优先级
  
按id属性查找
  
//标签名称[@id="id的值"]
//input[@id="kw"]
  
按name属性查找
  
//标签名称[@name="name的值"]
//input[@name="username"]
  
按class属性查找
  
//标签名称[@class="class的值"]
//button[@class="btn-submit"]
  
按其他属性查找
  
//标签名称[@属性名称="属性值"]
//input[@placeholder="
  
按标签之间的文本(innerText)查找
  
//标签名称[text()="文本内容"]
//span[text()="
  
多个条件混合使用
  
  
//select[@name="city" and @size="4"]
  
//select[@name="city"] or @size="4"]
XPath最佳实践
1、  先按当前元素的特征定位元素,id、name、特殊的class、placeholder等属性
2、  如果当前元素没有固定的特征
2.1  定位该元素有固定特征的父亲级元素、祖先级元素,然后再向下查找该元素,例如://*[@id='J_login_form’]/input
  
XPath写法
  
说明
  
div[id='J_login_form’]/input
  
从div[id='J_login_form’]向下查找子节点input
  
div[id='J_login_form’]//input
  
从div[id='J_login_form’]向下查找子、孙节点input
2.2  定位该元素有固定特征的兄弟元素,然后再相邻查找该元素,例如:
   前一个兄弟://div[@class="com-answer-panel"]/preceding-sibling::div[1]
   后一个兄弟://div[@class="com-answer-panel"]/following-sibling::div[1]
2.3  定位该元素有固定特征的子元素、孙子元素,然后再向上查找该元素,例如:
向上查找父节点://div[@class="com-answer-panel"]/parent::div
向上查找祖先节点(往往有多个,还需要增加其他限定条件)://div[@ class="com-answer-panel"]/ancestor::div
XPath举例
l  根据父亲元素定位目标元素
XPath写法://div[@id=”aid”]/div
l  根据祖先元素定位目标元素
XPath写法://div[@id=”aid”]//div[@class=”e”]
l  根据子元素定位目标元素
XPath写法://div[@id=”bid”]/parent::div
l  根据子孙元素定位目标元素
XPath写法://div[@id=”cid”]/ ancestor::div[@class=”a”]
l  根据前一个兄弟节点定位目标元素
XPath写法://div[@id=”cid”]/ preceding-sibling::div
l  根据后一个兄弟节点定位目标元素
XPath写法://div[@id=”cid”]/ following-sibling::div

本帖子中包含更多资源,您需要 登录 才可以下载或查看,没有帐号?立即注册

X
您需要登录后才可以回帖 登录

本版积分规则