一、从根目录/开始

有点像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. k8s系列---网络插件flannel

    跨节点通讯,需要通过NAT,即需要做源地址转换. k8s网络通信: 1) 容器间通信:同一个pod内的多个容器间的通信,通过lo即可实现: 2) pod之间的通信,pod ip <---> ...

  2. [RHEL8]关闭SELinux(同CentOS7)

    修改配置文件(永久修改) # vi /etc/selinux/config SELINUX=disabled # 关闭 SELINUX=enforcing # 开启 命令方式(临时修改重启失效) # ...

  3. centos 配置虚拟环境

    1.pip install virtualenvwrapper (pip install virtualenv virtualenvwrapper)2.export WORKON_HOME=/home ...

  4. finalshell连接工具

    FinalShell功能特点: 1.多平台支持Windows,Mac OS X,Linux2.多标签,批量服务器管理.3.支持登录Ssh和Windows远程桌面.4.漂亮的平滑字体显示,内置100多个 ...

  5. XPath简介、功能及使用方法

    html = '''<html><head><title>The Dormouse's story</title></head><bo ...

  6. 带输入提示的搜索框ajax请求

    先放图 首先要引用的文件有: base.css  https://www.cnblogs.com/chenyingying0/p/12363689.html jquery.js transition. ...

  7. iOS闪退日志的收集和解析

    在开发过程中往往会遇见有个别用户或者测试人员反馈app的闪退现象,而项目一般集成的统计闪退的第三方库是笼统的统计了所有的闪退信息,无法去定位某一个用户提出的某一个时间点的某一个闪退问题,于是乎这个时候 ...

  8. xPath和html基础扫盲

    xPath:一种HTML和XML的查询语言,他能在XML和HTML的树状结构中寻找节点 安装xPath: pip方法: pip install  lxml win+R:cmd 打开命令控制台:   此 ...

  9. Learning hard 网络编程

    1.1网络分层总览 网络上的计算机之所以可以互相通信,是因为它们都遵守着公认的互联网协议,就如同人与人的交流一样,两个人能够交流,就必须知道对方的语言,计算机的网络通信可归结为网络中层与层之间的通信, ...

  10. 【React Native】在网页中打开Android应用程序

    React Native官方提供Linking库用于调起其他app或者本机应用.Linking的主要属性和方法有: 属性与方法 canOpenURL(url); 判断设备上是否有已经安装相应应用或可以 ...