分享:selenium(一) xpath
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的更多相关文章
- selenium之xpath定位和input文本
selenium之xpath定位和input文本 xpath简单定位: 打开浏览器的F12 在自己需要定位的元素的那里右键 选择copy->xpath selenium获取input下的文本: ...
- 用XPath精确定位节点元素&selenium使用Xpath定位之完整篇
在利用XSL进行转换的过程中,匹配的概念非常重要.在模板声明语句 xsl:template match = ""和模板应用语句xsl:apply-templates select ...
- selenium中Xpath和CSS Selector的使用方法
一.selenium中Xpath的使用方法 1. 什么是xpath? Xpath是XML的路径语言,通俗一点讲就是通过元素的路径来查找这个标签元素 2. 练习Xpath的工具 火狐浏览器,下载插件Fi ...
- selenium使用Xpath+CSS+JavaScript+jQuery的定位方法(治疗selenium各种定位不到,点击不了的并发症)
跟你说,你总是靠那个firebug,chrome的F12啥的右击复制xpath绝对总有一天踩着地雷炸的你死活定位不到,这个时候就需要自己学会动手写xpath,人脑总比电脑聪明,开始把xpath语法给我 ...
- selenium:Xpath定位详解
xpath定位在业界被戏称为元素定位的"屠龙宝刀",宝刀在手,武林我有.现在我们就来详解xpath定位方法. 一.xpath通过元素属性定位 xpath可以通过元素的属性来定位,如 ...
- selenium By.xpath 用法
搞了一下午... 1. Xpath往往以“//”开头,属性都是采用@表示,例如//div[@id='_navigation']/div 2. Firefox有个插件叫做xpather, ...
- python3[爬虫实战] 使用selenium,xpath爬取京东手机
使用selenium ,可能感觉用的并不是很深刻吧,可能是用scrapy用多了的缘故吧.不过selenium确实强大,很多反爬虫的都可以用selenium来解决掉吧. 思路: 入口: 关键字搜索入口 ...
- selenium采用xpath方法识别页面元素
有些HTML页面中的元素中属性较少,经常有找不到id.class.name等常用属性的时候,这个时候xpath.css就能很好的识别到我们的元素. Firefox和chrome浏览器中均有xpath. ...
- selenium webdriver XPath的定位方法练习 !
html 代码: <html> <body> <div id="div1"> <input name="divl1input& ...
随机推荐
- Getting started with Kaggle -- Kaggle Competitions
1: The Competition We'll be learning how to generate a submission for a Kaggle competition. Kaggle i ...
- HELLO JAVA!
从今天开始,我将不定期地更新自己在大学学习到的JAVA知识,欢迎大家一同前来观摩学习,如有纰漏还请多多赐教2018-09-1715:39:14
- build custom centos7
必读,在以下内容之前. pre: 0. install log redhat6 mak iso guide redhat7 make iso guide 1. Linux安装>(三)发行版制作 ...
- linux判断日志文件大小进行清理
脚本写了一个死循环,根据nohup产生的日志多大, 这里表示日志超过500M之后清理, 具体数字可自定义 睡眠数可自定义 #!/usr/bin/bash while true do s=`du -k ...
- fastjson常用方法
fastjson是一款alibaba公司开发的json工具包.json经常被使用在数据传输方面,因此特意对它的一些常用方法做备注,欢迎看客在评论区补充或指出问题. 首先定义一个实体类,用于我们进行对象 ...
- thinkphp在前端页面的js代码中可以使用 U方法吗? 可以使用模板变量如__URL__等吗?
thinkphp在前端页面的js代码中可以使用 U方法吗? : 可以的! tp的U方法, 是"全局的", 什么是全局的? 就是, 可以在 "任何地方"使用的: ...
- 如何查看sonarqube的版本
Server Logs & System Info The System Info page is found at Administration > System. It gives ...
- CF983B XOR-pyramid
设\(xorx[l][r]\)表示题目中\(f(l,r)\)的值,则可以得出 \[ xorx[i][j]=xorx[i][j-1] \oplus xorx[i+1][j] \] 设\(maxx[l][ ...
- Hadoop【单机安装-测试程序WordCount】
Hadoop程序说明,就是创建一个文本文件,然后统计这个文本文件中单词出现过多少次! (MapReduce 运行在本地 启动JVM ) 第一步 创建需要的文件目录,然后进入该文件中进行编辑 ...
- vscode "没有活动的源代码控制提供程序" 解决办法
确保安装git F1,输入Show built-in Extensions, 左侧列表中找Git,然后启用即可