xpath和Css定位总结

2021-04-27  本文已影响0人  阿登20

Xpath转Css写法图

image.png

Xpath等价于css的一些写法

Xpath路径表达式 CSS选择器表达式
只通过绝对路径、标签定位
/html/body html>body
/html/body/div/div[@class="bar"] html>body>div>div.bar
/html//div html div
/html//div/ul//li html div>ul li
通过相对路径、标签、属性值定位
//div[@class="header"] div.header
//div[@class="ush top_wrap"] div.top_wrap
//div[@class="ush top_wrap"]/a[@class="more"] div.top_wrap>a.more
通过标签、属性值、通配符定位
//* *
//*[@class="header"] [class="header"]或 .header
//*[@id="languagelist"] [id="languagelist"]或 #languagelist
//*[@id="languagelist"]/li[2] #languagelist>li:nth-child(2)
//div[@class="header"]//ul[@id="languagelist"]/* div.header ul#languagelist >*
通过下标 或 属性定位
//@href [href]
//a[@href] a[href]
//div[@class="header"]//ul/li[last()] div.header ul >li:last-child
//div[@class="ush top_wrap"]//ul[@id]/li[1] div.top_wrap ul[id]>li:first-child
若干路径
//body | //ul body , ul
//ul[@id="kwdTypeSelUl"] | //ul[@id="area_channel_layer_list"] ul#kwdTypeSelUl , ul#area_channel_layer_list

Xpath一些特殊写法

表达式 描述
//title[@*] 选取所有带有属性的 title 元素
条件表达式and、or、not
//div[@id="zoomer" and @style="display:none;"] 找到id="zoomer"和style="display:none"的div元素
//div[@class="cresume" or @class="footer"] 找到class="cresume"或 "footer"的div元素
//*[@id="showguide" and not(@class="footer")] 找到id="showguide"且class != "footer"的任意元素
模糊匹配函数starts-with、contains
//*[starts-with(@id,"s")] 找到id开头为 s 的任意元素
//*[ends-with(@id,"s")] 找到id结尾为 s 的任意元素
//*[contains(text(),'注册')] 找到标签间文本包含 注册 的任意元素
定位函数position
//*[contains(@id,"languagelist")]/li[position()=3] 找到第三个 li
//*[contains(@id,"languagelist")]/li[position()<=2] 找到前两个 li

XPath 轴地位

定位方式 描述
ancestor 选取当前节点的所有先辈(父、祖父等)
ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身
child 选取当前节点的所有子元素【/可替代,略显多余】
descendant 选取当前节点的所有后代元素(子、孙等)【//可替代,略显多余】
descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身
following 选取当前节点的结束标签之后的所有节点
following-sibling 选取当前节点之后的所有同级节点
parent 选取当前节点的父节点【../可替代,略显多余】
preceding 选取文档中当前节点的开始标签之前的所有节点
preceding-sibling 选取当前节点之前的所有同级节点

Xpath其他方式的实际例子

其他定位方式 是否有等价写法?
//*[contains(@class,"top_wrap")]/parent::div //*[contains(@class,"top_wrap")]/..
//*[contains(@class,"content")]/div/child::div //*[contains(@class,"content")]/div/div
//*[contains(@id,"userid")]/preceding-sibling::input //*[contains(@id,"userid")]/../input[position()<=4]
//*[contains(@id,"userid")]/following-sibling::div //*[contains(@id,"userid")]/../div[position()=2]
//*[contains(@class,"content")]/descendant::div //*[contains(@class,"content")]//div

Css标签定位

h1 `//h1
div p `//div//p
ul > li //ul/li
ul > li > a //ul/li/a
div > * //div/*
:root /
:root > body /body

Css属性定位

CSS xpath
标签属性定位
#id //*[@id="id"]
.class //*[@class="class"]
input[type="submit"] //input[@type="submit"]
a#abc[for="xyz"] //a[@id="abc"][@for="xyz"]
a[rel] //a[@rel]
a[href^='/'] //a[starts-with(@href, '/')]
a[href$='pdf'] //a[ends-with(@href, '.pdf')]
a[href*='://'] //a[contains(@href, '://')]
a[rel~='help'] //a[contains(@rel, 'help')]
上一篇下一篇

猜你喜欢

热点阅读