xpath无所不能定位。  

https://www.w3.org/TR/xpath/all/#axes

两个神器:firebug、xpath-checker

举例:混合定位

//td[a//front[contains(text(),"从零开始视频")]//input[@type='checkbox']

确认xpath是否是正确的:firefox==>F12==>控制台==》$x(".//*[@id='su']")

第一部分:基础定位:

1。依靠自己属性,文本定位(当f元素的文本text(),属性@是唯一时用)

//td[text()='wangm']   #文本是唯一的td元素

//div[contains(@class,'cux-rightarrowicon-on')]    #class属性的值是唯一的div元素

//input[@type='radio' and @value='1']   #两个属性一起确定一个元素

2。依靠父节点定位(当子节点没有唯一可定位的属性,但它的父节点却有唯一的属性时用)

//div[@class='wangm']/div

//div[@id='wangm']/div

// div[@id='testid']/input

3。 依靠子节点定位(当父节点没有唯一定位的属性,但它的子节点有确定的值或者有确定的组合时)

//div[div[@id='wangm']]   #中括号是用来描述父子关系的。

//div[div[@name='wangm']]

//div[p[@name='testp']] 

4。 混合型(实际应用中复杂些)

//div[div[@name='listType']]/img    #先用name属性找到子节点div,定位其父div,找的是父div下的img元素。

第二部分:进阶定位:

兄弟姐妹节点

following-sibling   #后面的兄妹节点

preceding-sibling  #

starts-with  #以什么内容开头  语法与contains一样。

contains   #包含什么内容

not

//input[@id='1234'] /following-sibling::input   #后面的兄妹input节点

//input[@id='1234'] /preceding-sibling::span   #前面的兄妹sapn 节点

//input[starts-with(@id,123')]   #以123开头的Id属性的内容的input元素。

//span[not(contains(text(),'xpath'))]   #寻找text内容不包含xpath的span元素。

补充整理:

绝对路径 :html/body/div/span[2]/input[4]   中间结构变化,就失效

相对路径: //开始  在整个html source里找,不管在什么位置

索 引:[x]   从1开始,而不是从0开始     如://div/input[2]  #div下面第2个input

误解://span[28]   #一个页面上虽然有28个span,但只有放在同一个根节点下才是span[28]能定位到。

关键字:position:索引也可以认为是一个position

last: 同上

//div[@id='test']/span[position()=1]                ====      //div[@id='test']/span[1]

//div[@id='test']/span[position()<3]                 ====      //div[@id='test']/span[1]     //div[@id='test']/span[2]

//div[@id='test']/span[last()-1]                        ====      最后第二个

//div[@id='test']/span[last()-2]                        ====      最后第三个

属性定位:  @class

功能关键字:

常用的:  and / [][] ,  or,  not, contains, starts-with(无end-with)

and    #多个属性共同定位一个元素    //span[@name='wangm' and text()='wangm']    ==== //span[@name='wangm'][text()='wangm']

or      #符合一个属性的就可以定位出来   例子同上。

不常用的: substring,subsring-before , substring-after

substring : 一个属性的值,一部分是固定的,而另一部分是变化的,此时用。且从1开始。   //span[substtring(@name,3,5)=‘wangm’]

三个参数(属性,开始位置,长度) ,长度不写时,表示取到最后。   如name='7-wangm-89'

substring-before:  属性的值,一部分固定,一部分动态,且中间有分隔符    如 name='wangm-789'       //span[substtring-before(@name,'-')=‘wangm’]

两个参数(属性,分隔符)

substring-after: 同上     如 name='789-wangm'

通配符: *   代表所表

//sapn[@*='wangm']   #span下任意属性等于wangm的

//*[@*='wangm']     #任意的标签中任意的属性等于wangm的。

Axes  轴

------描述查找范围的-----

parent  父节点                            如://div[span[text()='wangm']]/parent::div    #当前div的父节点div

ancestor   祖先节点,包括父节点,一层一层向上。    如:

descendant  所有子孙节点找,不管什么位置,简写//

following-sibling   #当前元素后面的兄弟姐妹

preceding-sibling    #当前元素前面的兄弟姐妹

following  #当前元素后面的所有元素,不管是兄弟姐妹还是子孙后代,一直到</html>

preceding #当前元素前面的所有元素,不管是兄弟姐妹还是子孙后代,一直到<html>

ancestor-or-self      #祖先节点并包含自己

descendant-or-self    #子孙节点并包含自己

如://div[span[text()='wangm']]/parent::div

分享:selenium(一) xpath的更多相关文章

  1. selenium之xpath定位和input文本

    selenium之xpath定位和input文本 xpath简单定位: 打开浏览器的F12 在自己需要定位的元素的那里右键 选择copy->xpath selenium获取input下的文本: ...

  2. 用XPath精确定位节点元素&selenium使用Xpath定位之完整篇

    在利用XSL进行转换的过程中,匹配的概念非常重要.在模板声明语句 xsl:template match = ""和模板应用语句xsl:apply-templates select ...

  3. selenium中Xpath和CSS Selector的使用方法

    一.selenium中Xpath的使用方法 1. 什么是xpath? Xpath是XML的路径语言,通俗一点讲就是通过元素的路径来查找这个标签元素 2. 练习Xpath的工具 火狐浏览器,下载插件Fi ...

  4. selenium使用Xpath+CSS+JavaScript+jQuery的定位方法(治疗selenium各种定位不到,点击不了的并发症)

    跟你说,你总是靠那个firebug,chrome的F12啥的右击复制xpath绝对总有一天踩着地雷炸的你死活定位不到,这个时候就需要自己学会动手写xpath,人脑总比电脑聪明,开始把xpath语法给我 ...

  5. selenium:Xpath定位详解

    xpath定位在业界被戏称为元素定位的"屠龙宝刀",宝刀在手,武林我有.现在我们就来详解xpath定位方法. 一.xpath通过元素属性定位 xpath可以通过元素的属性来定位,如 ...

  6. selenium By.xpath 用法

    搞了一下午... 1.     Xpath往往以“//”开头,属性都是采用@表示,例如//div[@id='_navigation']/div 2.     Firefox有个插件叫做xpather, ...

  7. python3[爬虫实战] 使用selenium,xpath爬取京东手机

    使用selenium ,可能感觉用的并不是很深刻吧,可能是用scrapy用多了的缘故吧.不过selenium确实强大,很多反爬虫的都可以用selenium来解决掉吧. 思路: 入口: 关键字搜索入口 ...

  8. selenium采用xpath方法识别页面元素

    有些HTML页面中的元素中属性较少,经常有找不到id.class.name等常用属性的时候,这个时候xpath.css就能很好的识别到我们的元素. Firefox和chrome浏览器中均有xpath. ...

  9. selenium webdriver XPath的定位方法练习 !

    html  代码: <html> <body> <div id="div1"> <input name="divl1input& ...

随机推荐

  1. neutron full stack

    1.  通读一下 neutron的那个文档.  里面介绍了, db怎么隔离的, amqp怎么隔离的. 2.  记住文档中,那个full stack的图. 3.  走读代码      从TestOvsC ...

  2. ps -ef|grep详解

    ps命令将某个进程显示出来 grep命令是查找 中间的|是管道命令 是指ps命令与grep同时执行 PS是LINUX下最常用的也是非常强大的进程查看命令 grep命令是查找,是一种强大的文本搜索工具, ...

  3. STM32之独立看门狗(IWDG)与窗口看门狗(WWDG)总结

    一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...

  4. 【python010-数组】

    1.创建列表 *创建普通列表 >>> member = ['尘封','破冰','python']>>> member['尘封', '破冰', 'python'] * ...

  5. error和exception有什么区别?

    Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题.比如:内存资源不足等.对于这种错误,程序基本无能为力,除了退出运行外别无选择,它是由Java虚拟机抛 ...

  6. Spring Boot以War包启动

    1.IDEA Spring Initializer自动构建的war包项目,自动生成的Initializer类,用于外部Tomcat容器启动该项目时调用,如果仍然使用主类main函数方式启动则与此类无关 ...

  7. [转]otunnel:一个和lcx差不多的端口转发的工具

    这是一个采用Golang编写的和lcx差不多的端口转发的工具,用来突破内网环境 项目地址 ooclab/otunnel 下载地址(内涵各大平台) http://dl.ooclab.com/otunne ...

  8. POJ 2409 Let it Bead

    思路 同这道题,只是颜色数从3变成c 代码 #include <cstdio> #include <algorithm> #include <cstring> #d ...

  9. NOIP队内凉心互测总结(8.22update)

    8.22(结束后一天) __stdcall讲题qwq 全是CF原题 D1T1 一看像是结论题,打了下表,水过 没错就是结论题,直接暴力就好 D1T2 看起来不好做,没有AC思路 打了暴力 40分 T2 ...

  10. qt QRegExp使用(搬运工)

    设置正则表达式. 类似下面的 QRegExp 这里的用法就是用来检测QString等字符串错误的,例如文件名里面最好就不出现<>|/\:等,所以可以如下定义QRegExp rx(" ...