Xpath定位
 
验证xpath写的是否正确:
1、打开浏览器检查页面,Ctrl+F,把路径输入进去,如果可以定位到的位置只有一个,说明是对的
2、在需要定位的页面,按F12后,切换至console列下,输入表达式。语法 $x("path_selector")
 
最常用的归纳几点:
   @     用在标签的属性前,选取属性      //标签[@属性名=属性值]
    ..    选取当前节点的父节点
   [x]    指第x个。  比如  //div/input[2]   指div下面第二个input
   *       指任意        比如 //span[@*="xxxx"] 指定位span中任意属性等于xxx的;比如//*[@id="kw"] 指定位任意标签属性id='kw'
           用在开始表示绝对路径,从根节点选取; 用在中间表示前一个节点的下一级
   //      用在开始表示从当前节点开始;用在中间表示所有子节点,不用考虑是否直接子节点
 
常用写法:
属性定位: //标签[@属性名=属性值]
文本定位: //标签[text()=精确内容]
contains()函数定位,如果属性值或文本内容过长,可以选取其中一部分定位,  //标签[contains(@属性,属性值)]     //标签[contains(text(),部分内容)]
 
 

 
一、xpath基本定位法
  1. 使用id定位
               driver.find_element_by_xpath('//input[@id=""kw]')
 
       2.使用class定位
             driver.find_element_by_xpath('//input[@class="s_ip"]')
 
       3.当然,通过常用8种方式结合xpath均可以定位(name,tag_name,link_text,partial_link_text)
 
二、xpath相对路径/绝对路径定位
      1.相对路径定位    
            以//开头,表示从当前节点开始,如: //form//input[@name="phone"]  
 
      2.绝对路径
            以/开头,从根节点开始选取,比较繁琐,一般不建议使用   如:/html/body/div/a
 
三、xpath文本、模糊、逻辑定位
      1、文本定位 
            使用text()元素的text内容  如: //button[text()="登录"]
 
      2. 模糊定位
          使用contains()包含函数  如: //button[contains(text(),"登录")]      //button[contains(@class,"btn")]
          使用starts-with     ends-with  如://button[starts-with(@class,"btn")]    //input[ends-with(@class,"-special")]
 
    3.逻辑运算符
         and  or    如://input[@name="phone" and @datatype="m"]
 
四, xpath轴定位
       轴运算
      ancestor:祖先节点  包括父
      parent: 父节点
      preceding-sibling  : 当前元素节点标签之前的所有兄弟节点(同级)
      preceding: 当前元素节点标签之前的所有节点
      following-sbling:当前元素节点标签之后的所有兄弟节点 (同级)     如: //input/following::[1]  input的下一个兄弟元素
      following: 当前元素节点标签之后的所有节点
  
   使用方法:  轴名称::节点名称    (前后的定位与之前一致,用/隔开即可)
    使用较多的场景:页面显示为一个表格样式数据列
   

selenium---xpath定位方法详解的更多相关文章

  1. selenium+Java,xpath定位方法详解(搬运留存)

    用xpath绝对路径比较费事费力,还容易报错,下面几种模糊定位比较灵活好用 driver.findElement(By.xpath("//*[@id='J_login_form']/dl/d ...

  2. xpath定位方法详解

    1.xpath较复杂的定位方法: 现在要引用id为“J_password”的input元素,可以像下面这样写: WebElement password = driver.findElement(By. ...

  3. xpath定位中详解id 、starts-with、contains、text()和last() 的用法

    1.XPATH使用方法 使用XPATH有如下几种方法定位元素(相比CSS选择器,方法稍微多一点): a.通过绝对路径定位元素(不推荐!) WebElement ele = driver.findEle ...

  4. xpath使用方法详解id 、starts-with、contains、text()和last() 的用法

    1.XPATH使用方法 使用XPATH有如下几种方法定位元素(相比CSS选择器,方法稍微多一点): a.通过绝对路径定位元素(不推荐!) WebElement ele = driver.findEle ...

  5. C++调用JAVA方法详解

    C++调用JAVA方法详解          博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...

  6. CURL使用方法详解

    php采集神器CURL使用方法详解 作者:佚名  更新时间:2016-10-21   对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程 ...

  7. Java提高篇——equals()与hashCode()方法详解

    java.lang.Object类中有两个非常重要的方法: 1 2 public boolean equals(Object obj) public int hashCode() Object类是类继 ...

  8. PHP cURL应用实现模拟登录与采集使用方法详解

    对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_co ...

  9. C# Process.Start()方法详解(转)

    C# Process.Start()方法详解 System.Diagnostics.Process.Start(); 能做什么呢?它主要有以下几个功能: 1.打开某个链接网址(弹窗). 2.定位打开某 ...

  10. 元素定位-XPATH定位方法总结

    1.Xpath定位方法探讨 xpath是比较常用的一种定位元素的方式,因为它很方便,缺点是,消耗系统性能.如果Xpath使用的比较好,几乎可以定位到任何页面元素,而且受页面变化影响较小. 1.1.什么 ...

随机推荐

  1. vue provide inject 方法

    上级组件: provide() { return { changeSelectOptions: this.changeSelectOptions, switchTabs: () => this. ...

  2. CF1534F2 Falling Sand (Hard Version)

    个人思路: 每个点向相邻沙子连边,向本列和相邻 \(2\) 列下方第一个沙子连边. 对于一个 DAG,所有入度为 \(0\) 的点会覆盖全部点.我们缩点即可通过 F1. 但是这样做是过不了 F2 的. ...

  3. WPF实现一个简单自定义管道

    先看效果  xaml代码 <UserControl x:Class="WPF控件测试.Control.Pipeline" xmlns="http://schemas ...

  4. vue页面多表单验证保存

    页面中有多个表单需要验证,可以使用以下方法: export default { data: { return { addOrEditVo: { name: '', description: '', a ...

  5. PCIe收发卡设计资料:611-基于VU9P的2路4Gsps AD 2路5G DA PCIe收发卡

    基于VU9P的2路4Gsps AD 2路5G DA PCIe收发卡 一.板卡概述 基于XCVU9P的5Gsps AD DA收发PCIe板卡.该板卡要求符合PCIe 3.0标准,包含一片XCVU9P-2 ...

  6. GitLab + Rainbond 打造Devops流程

    GitLab + Rainbond 打造Devops流程 流程 预设项目有两个分支,dev和master dev分支对应dev环境 master分支对应test环境和prod环境 开发在dev中编写代 ...

  7. mongoDB日常操作03

    MongoDB中导出csv文件1.找到mongoDB的安装目录,bin目录2.通过控制台进入bin目录  例: cd E:\java\mongoDB\bin\3.测试mongo.exe能否运行  例: ...

  8. setState 更新

    同步逻辑中,setState异步更新,同步更新会合并为一次更新 异步逻辑中,setState同步更新 this.setState({ data:data,()=>{ } }) 在回调函数里面了解 ...

  9. leecode62不同路径(动态规划)

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 "Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为 &quo ...

  10. linux中 查看 CPU 内存负载 磁盘IO 网络IO情况

    1.压测时如何观察机器的CPU负载 先来看一个最最常用的监测linux机器性能的命令,就是top命令,直接在linux命令行只能够输入top指令就可以了,然后我们这里来给大家解释一下,top指令展示出 ...