首页 > 其他 > 详细

xpath定位的高级用法

时间:2020-08-31 15:59:53      阅读:560      评论:0      收藏:0      [点我收藏+]

有时候我们需要先定位到父元素,再去定位某个元素

注意:当你使用 父元素.find_element_by_xpath 这种方式定位的时候,元素定位表达式必须以点开头,如

ele = driver.find_elements_by_xpath("//div[@id=‘category-block‘]//ol/li")       #父元素

b = ele.find_elements_by_xpath(‘.//li[@class=\‘subcate-item\‘]//span‘)

如果不用点,会从整个文档开始找,即使你前边使用了父元素也没有效果

绝对路径定位

绝对路径定位 从顶层 html 开始往下找,像文件夹一样写的完整路径, 缺点:一旦页面结构发生改变,路径也随之失效,必须重新定位。 所以不推荐使用绝对路径的写法

以 "/"  开头, 让xpath 从文档的根节点开始解析 

相对路径定位

以"//" 开头, 让xpath 从文档的任何元素节点开始解析(也就是说每个节点都作为起点找一下)

索引定位

//input[2]  任意节点下的第二个 input 标签

技术分享图片

属性定位

//input[@type="submit"]    任意节点下type 属性为 submit 的 input 标签

技术分享图片

其他定位方式

parent  选取当前节点的父节点

//*[@id="content_views"]/p[51]/span[1]/parent::p

技术分享图片

 

 后面的就不一个一个举例了

 

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

//*[@id="content_views"]/p[51]/span[1]/ancestor::div

ancestor-or-self  选取当前节点的所有先辈(父、祖父等)以及当前节点本身(不包含叔叔伯伯

//*[@id="content_views"]/p[51]/span[1]/ancestor-or-self::div

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

//*[@id="content_views"]/descendant::span

descendant-or-self选取当前节点的所有后代元素(子、孙等)以及当前节点本身

//*[@id="content_views"]/p[51]/descendant-or-self::p

preceding   选取文档中当前节点的开始标签之前的所有节点

//*[@id="content_views"]/p[51]/preceding::p

preceding-sibling选取当前节点之前的所有同级节点

//*[@id="content_views"]/p[51]/span[2]/preceding-sibling::span

following   选取文档中当前节点的结束标签之后的所有节点(包括自己及自己的后代元素

//*[@id="content_views"]/p[51]/following::p

following-sibling选取当前节点之后的所有同级节点

//*[@id="content_views"]/p[51]/span[2]/following-sibling::span

注意这个::后面跟的是对应的父、子、同级等标签

xpath定位的高级用法

原文:https://www.cnblogs.com/king2/p/13589869.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!