1.xPath简介

XPath是一门在XML和HTML文档中查找信息的语言,可以用来在XML和HTML文档中对元素和属性进行遍历

XPath的安装

Chrome插件XPath Helper

点Chrome浏览器右上角:更多工具-----扩展程序-----谷歌商店--------勾选XPath Helper(需要翻墙)

2.语法详解

Xpath节点类型:

元素、属性、文本、命名空间、指令处理、注释及文档

Xpath:通过路径表达式从XML文档中选取节点或节点位置

方法:首先找目录元素是否有”精准元素“即唯一能标识的属性,找到,则用此属性定位;

1. 通过元素本身的唯一属性定位

方法:找到目标元素所在的”精准元素“即唯一标识属性,使用此属性定位

  • 1.1 通过id属性定位
  • 例:find_element_by_xpath("//input[@id='input']")      #@后跟属性,可以是任何属性
  • 1.2 通过name属性定位
  •      例:find_element_by_xpath("//div[@name='q']")

    2. 通过上一级目录的唯一属性定位

方法:目标元素没有唯一属性,则去找到与目标元素相近的上级目录中”唯一元素“作为起始位置,然后根据此相对位置逐层往子目录编写到目标位置

例:

find_element_by_xpath("//span[@id='input-container']/input") 

find_element_by_xpath("//div[@id='hd']/form/span/input")

find_element_by_xpath("//div[@name='q']/form/span/input")

3.  xpath做布尔逻辑运算

find_element_by_xpath("//div[@id='hd' or @name='q']")#查找id为hd或name为q的

4. 双条件同时过滤

find_element_by_xpath("//div[@id='hd'][@name='q'")

5.目录元素存在层级关系

例1:

 find_element_by_xpath("//ul[@class='app-list']/li[contains(@class,'safe')]/div")

例2:定位上一层再定位目标元素(定位dl再定位dt)

find_element_by_xpath("//form[@id='J_login_form]/dl/dt/input[@id='J_password']") 

6. 模糊定位

6.1 contains 方法(包含)

find_element_by_xpath("//a[contains(@name,'trnews')]")#获取元素为trnews的方法

6.2 start-with方法(以XX开头)

find_element_by_xpath("//a[start-with(@href,'http')]")#选取以http开头的元素

6.3 text方法

find_element_by_xpath("//a[contains(text(),'新闻')]")  查找超链接元素的文本内容
find_element_by_xpath("//*[text()='新闻']")  查找所有内容为退出二字的元素

7、xpath的一些包含逻辑的用法

//*[count(XXX)=2] //统计XXX元素个数=2的节点
//*[local-name()='xxx'] //找到tag为xxx的元素
//*[starts-with(local-name(),'x')] //找到所有tag以x开头的元素
//*[contains(local-name(),'x')] //找到所有tag包含x的元素
//*[string-length(local-name())=3] //找到所有tag长度为3的元素
//xxx | //yyy //多个路径查找

关于Xpath的更多相关文章

  1. xpath提取多个标签下的text

    title: xpath提取多个标签下的text author: 青南 date: 2015-01-17 16:01:07 categories: [Python] tags: [xpath,Pyth ...

  2. C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子)

    第一次接触HtmlAgilityPack是在5年前,一些意外,让我从技术部门临时调到销售部门,负责建立一些流程和寻找潜在客户,最后在阿里巴巴找到了很多客户信息,非常全面,刚开始是手动复制到Excel, ...

  3. 在Java中使用xpath对xml解析

    xpath是一门在xml文档中查找信息的语言.xpath用于在XML文档中通过元素和属性进行导航.它的返回值可能是节点,节点集合,文本,以及节点和文本的混合等.在学习本文档之前应该对XML的节点,元素 ...

  4. XPath 学习二: 语法

    XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) 来选取的. 下面列出了最有用的路径表达式: 表达式 描述 nodename 选 ...

  5. xpath 学习一: 节点

    xpath 中,有七种类型的节点: 元素.属性.文本.命名空间.处理指令.注释.以及根节点 树的根成为文档节点或者根节点. 节点关系: Parent, Children, sibling(同胞), A ...

  6. Python爬虫利器三之Xpath语法与lxml库的用法

    前面我们介绍了 BeautifulSoup 的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法.如果大家对 Beau ...

  7. 使用python+xpath 获取https://pypi.python.org/pypi/lxml/2.3/的下载链接

    使用python+xpath 获取https://pypi.python.org/pypi/lxml/2.3/的下载链接: 使用requests获取html后,分析html中的标签发现所需要的链接在& ...

  8. 关于robotframework,app,appium的xpath定位问题及常用方法

    关于类似的帖子好像很多,但是没有找到具体能帮我解决问题的办法.还是自己深究了好久才基本知道app上面的xpath定位和web上的不同点: 先放一个图: A,先说说不用xpath的场景,一般是用于存在i ...

  9. Selenium Xpath Tutorials - Identifying xpath for element with examples to use in selenium

    Xpath in selenium is close to must required. XPath is element locator and you need to provide xpath ...

  10. xpath定位中starts-with、contains和text()的用法

    starts-with 顾名思义,匹配一个属性开始位置的关键字 contains 匹配一个属性值中包含的字符串 text() 匹配的是显示文本信息,此处也可以用来做定位用 eg //input[sta ...

随机推荐

  1. 格式化JS代码

    平常在项目中经常会遇到下载别人的js文件都是加密过的,不方便阅读都是一整行, 个人无法进行阅读,浏览器能够识别出来,所以就可以使用浏览器进行格式化js代码: 1.打开浏览器chrome为例,打开使用j ...

  2. AutoCad 二次开发 jig操作之标注跟随线移动

    AutoCad 二次开发 jig操作之标注跟随线移动 在autocad当中,我认为的jig操作的意思就是即时绘图的意思,它能够实时的显示出当前的操作,以便我们直观的感受到当前的绘图操作是什么样子会有什 ...

  3. 2019-2020-8 20199317 《Linux内核原理与分析》 第八周作业

    第7章  可执行程序工作原理 1  ELF目标文件格式 1.1  ELF概述        “目标文件”,是指编译器生成的文件.“目标”指目标平台目标文件一般也叫作ABI(Application Bi ...

  4. Android 通知的基本用法

    一.概念 通知(Notification)是 Android 系统中比较有特色的一个功能,当某个应用程序希望像用户发送一些提示消息的时候,然而此时应用程序并不在前台运行,此时就可以借助通知来实现.发出 ...

  5. milvus安装及其使用教程

    milvus 简介 milvus是干什么的?通俗的讲,milvus可以让你在海量向量库中快速检索到和目标向量最相似的若干个向量,这里相似度量标准可以是内积或者欧式距离等.借用官方的话说就是: Milv ...

  6. es6 babel 安装以及使用

    1,安装好node(需要使用npm包管理工具) 2,在本地项目路径下npm init,格式化成功后会在项目下生成一个配置文件package.json 3,本地安装bable npm install - ...

  7. ios中陀螺仪CoreMotion的用法

    转自:http://code.eoe.cn/471/title/ios涓檧铻轰华CoreMotion鐨勭敤娉 README.md 外部引用 原始文档 以前在iphone中要得到加速度时,只能使用Ac ...

  8. sticker-footer布局

    目录 1.嵌套层级不深,可直接继承自 body width:100%: height:100%; 2.嵌套层级很深,无法直接从上级继承 百分比高度的 第一种方法:给需要的 sticker-footer ...

  9. jQuery实现类似于购物车操作

    先看页面的代码,后面会详细写每一个操作的实现. <html> <head> <title>jQuery操作表格</title> <meta cha ...

  10. Java继承之再谈构造器

    目录 Java继承之再谈构造器 初始化基类 默认构造器 带参数的构造器 子类调用父类构造器 Java继承之再谈构造器 初始化基类 前面提到,继承是子类对父类的拓展.<Thinking in Ja ...