一、从根目录/开始

有点像Linux的文件查看,/代表根目录,一级一级的查找,直接子节点,相当于css_selector中的>号/html/body/div/p

二、根据元素属性选择:

查找具体的元素,必须在前面输入标准开头//,表示从当前节点寻找所有的后代元素

  • //div/* div下面的所有的元素
  • //div//p 先在整个文档里查找div,再在div里查找p节点(只要在内部,不限定是否紧跟) ;等价于 css_selector里的('div p')
  • //div/p p是div的直接子节点; 等价于 css_selector里的('div > p')
  • //*[@style] 查找所有包含style的所有元素,所有的属性要加@; 等价于 css_selector里的('*[style]')
  • //p[@spec='len'] 必须要加引号;等价于 css_selector里的("p[spec='len']")
  • //p[@id='kw'] xpath中对于id,class与其他元素一视同仁,没有其他的方法

三、选择第几个节点

  • //div/p[2] 选择div下的第二个p节点 ;等价于css_selector里的div>p:nth-of-type(2) 符合p类型的第二个节点
  • //div/*[2] 选择div下第二个元素
  • //div/p[position()=2] position()=2 指定第二个位置; 等价于上面的 //div/p[2]
  • position()>=2 位置大于等于2
  • position()<2 位置小于2
  • position()!=2 位置不等于2
  • //div/p[last()] 选择div下的倒数第一个p节点; last()倒数第一个
  • //div/p[last()-1] 选择div下的倒数第二个p节点;
  • //div/p[position()=last()] 倒数第一个
  • //div/p[position()=last()-1] 倒数第二个
  • //div/p[position()>=last()-2] 倒数第一个,第二个,第三个

四、组合选择

  • //p | //button 选择所有的p和button,等价于css_selector里的 p, button
  • //input[@id='kw' and @class='su'] 选择id=kw 并且 class="su"的input元素

五、兄弟节点的选择相邻后面的兄弟节点的选择:

  • following-sibling:: 两个冒号
  • //div/following-sibling::p 选择div里相邻的p节点
  • 相邻前面的兄弟节点的选择:preceding-sibling:: 此方法在css_selector中没有
  • //div/preceding-sibling::p[2] 选择div里前面相邻的第二个节点,不加[2]选择的是前面的所有的p节点

六、选择父节点

  • //p[@spec='len']/.. 选择p节点的上层节点 此方法在css_selector中没有
  • //p[@spec='len']/../.. 上层节点的上层节点

七、在webelement对象里面使用查找Xpath 查找时,必须使用.指明当前节点

  • food = driver.find_element_by_id('food')
  • eles = food.find_elements_by_xpath(".//p") .指明当前节点
  • eles = food.find_elements_by_xpath("..") 查找当前节点的父节点

参考博客:https://blog.csdn.net/u012941152/article/details/83011110

selenium--find_element_by_xpath()方法汇总的更多相关文章

  1. selenium定位方法实例

    selenium定位方法实例 首先打开浏览器输入微博的网址,将网页最大化,等待3秒 from selenium import webdriver import time driver = webdri ...

  2. selenium定位方法(二)

    selenium定位方法(二)  1.xpath定位:xpath是在XML中查找节点所在的路径的表达式 1)绝对路径的Xpath表达式 例:/html/body/div/div[1]/ul//li[3 ...

  3. 你真的会玩SQL吗?实用函数方法汇总

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  4. Java实现时间动态显示方法汇总

    这篇文章主要介绍了Java实现时间动态显示方法汇总,很实用的功能,需要的朋友可以参考下 本文所述实例可以实现Java在界面上动态的显示时间.具体实现方法汇总如下: 1.方法一 用TimerTask: ...

  5. C#读写文件的方法汇总_C#教程_脚本之家

    C#读写文件的方法汇总_C#教程_脚本之家 http://www.jb51.net/article/34936.htm

  6. UITextView实现placeHolder方法汇总

    UITextField中有一个placeholder属性,可以设置UITextField的占位文字,起到提示用户的作用.可是UITextView就没那么幸运了,apple没有给UITextView提供 ...

  7. 将编码从GB2312转成UTF-8的方法汇总(从前台、程序、数据库)

    这篇文章主要介绍了将编码从GB2312转成UTF-8的方法汇总(从前台.程序.数据库),需要的朋友可以参考下 一个网站如果需要国际化,就需要将编码从GB2312转成UTF-8,其中有很多的问题需要注意 ...

  8. 本地获取System权限CMD方法汇总(转)

    本地获取System权限CMD方法汇总(转) 稍微整理了下,大概有三种方法可以本地获取system权限的cmd,但前提都是当前用户具备administrator权限. 下面列举的三种方法各有千秋,看你 ...

  9. Javascript对象属性与方法汇总

    Javascript对象属性与方法汇总 发布时间:2015-03-06 编辑:www.jquerycn.cn 详细介绍下,javascript对象属性与对象方法的相关知识,包括javascript字符 ...

  10. .net(C#)操作文件的几种方法汇总

    .net(C#)操作文件的几种方法汇总 System.IO命名空间下类的用法:在System.IO名称空间中包含了用于文件输入输出的主要类.File:实用类,提供许多静态方法,用于移动.复制和删除文件 ...

随机推荐

  1. [RHEL8]安装Docker Problem: package docker-ce-3:19.03.6-3.el7.x86_64 requires containerd.io

    系统环境 # cat /etc/redhat-release Red Hat Enterprise Linux release 8.0 (Ootpa) 安装依赖 # yum install -y yu ...

  2. 修改kali软件源并配置网络

    一.配置kali使用xshell连接 查看ssh服务状态 # service ssh status 开启ssh服务 # service ssh start 修改ssh配置文件 # vi /etc/ss ...

  3. Thinkphp 前端视图输出日期时间戳自动转换为时间格式化年月日

    需求:实现文章创建按年,月,日归类,并如图格式显示. 2018 年 11 月 ( 1 篇文章 ) 24日: 你走了真好,不然总担心你要走 (130) 05 月 ( 1 篇文章 ) 12日: 后来的我们 ...

  4. 聊聊GIS中的坐标系|再版 详细定义、计算及高程系统

    本篇讲坐标系统的详细定义,有关坐标系的变换公式,以及简单说说高程坐标系统. 本文约6000字,阅读时间建议45分钟.硬内容比较多,如有疏漏错误请指出,建议有兴趣的朋友进一步阅读. 作者:博客园/B站/ ...

  5. Cassandra 在 360 的实践与改进

    分享嘉宾:王锋 奇虎360 技术总监 文章整理:王彦 内容来源:Cassandra Meetup 出品平台:DataFunTalk 注:欢迎转载,转载请留言. 导读:2010年,Dropbox 在线云 ...

  6. mybatis实体为什么要提供一个无参的构造函数

    提问:Mybatis查询结果映射到实体类的时候,实体类为什么必须有一个空的构造函数? 类中如果没有构造函数,隐藏是无参构造函数,方便实体类需要通过Mybatis进行动态反射生成.如果实体类中一旦声明构 ...

  7. Android Studio 快捷方式记录

  8. sqldeveloper更改语言设定

    \sqldeveloper\ide\bin\ide.conf   添加下面的 日语 AddVMOption -Duser.language=jaAddVMOption -Duser.country=J ...

  9. vim 进化 编码问题

    " 解决菜单乱码 source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim " 防止文件显示乱码 set fileenc ...

  10. Element节点

    Element节点对象对应网页的 HTML 元素.每一个 HTML 元素,在 DOM 树上都会转化成一个Element节点对象(以下简称元素节点).元素节点的nodeType属性都是1.Element ...