使用xpath定位元素
一、xpath的基本语法
xpath(query) :返回query表达式对应的所有节点的selector list。
>>> response.xpath('//div[@class="quote"]//small/text()')
[<Selector xpath='//div[@class="quote"]//small/text()' data='Albert Einstein'>, <Selector xpath='//div[@class="quote"]//small/text()' data='J.K. Rowling'>, <Selector xpath='//div[@class="quote"]//small/text()' data='Albert Einstein'>, <Selector xpath='//div[@class="quote"]//small/text()' data='Jane Austen'>, <Selector xpath='//div[@class="quote"]//small/text()' data='Marilyn Monroe'>, <Selector xpath='//div[@class="quote"]//small/text()' data='Albert Einstein'>, <Selector xpath='//div[@class="quote"]//small/text()' data='André Gide'>, <Selector xpath='//div[@class="quote"]//small/text()' data='Thomas A. Edison'>, <Selector xpath='//div[@class="quote"]//small/text()' data='Eleanor Roosevelt'>, <Selector xpath='//div[@class="quote"]//small/text()' data='Steve Martin'>]
extract():序列化该节点为Unicode字符串并返回list。
>>> response.xpath('//div[@class="quote"]//small/text()').extract()
['Albert Einstein', 'J.K. Rowling', 'Albert Einstein', 'Jane Austen', 'Marilyn Monroe', 'Albert Einstein', 'André Gide', 'Thomas A. Edison', 'Eleanor Roosevelt', 'Steve Martin']
extract()[0] :取出list中的值。
>>> response.xpath('//div[@class="quote"][1]//small/text()').extract()[0]
'Albert Einstein'
二、xpath通过节点属性获取节点
div[@属性="属性值"]
//th[@class="common"]
xpath获取节点属性值
/@属性
//th/em/following-sibling::a[1]/@href # 可以得到href属性的值 组成的selector list
三、xpath获取元素节点中的文本
xpath定位到的是节点本身,要想获取到节点中的文本,需要使用/text()
代码如下:
//tbody[@id ="separatorline"]/following-sibling::tbody//th/em/following-sibling::a[1]/text()
四、xpath定位兄弟元素
- following-sibling 随后的兄弟元素
- preceding-sibling 之前的兄弟元素
例:定位51testing论坛里的帖子,不含上方广告类。
查看代码,会发现每个帖子由一个tbody组成,但tbody没有任何属性可以使用,唯一一个id还是动态的。尝试着找到了“版块主题”,发现有个可以使用的id,和其余tbody属于兄弟节点。于是就可以使用“版块主题”来定位它下面的所有tbody。xpth代码如下:
//tbody[@id="separatorline"]/following-sibling::tbody
:: 表示当前节点的父节点。
想要定位“版块主题”上方的tbody可以使用:
//tbody[@id="separatorline"]/preceding-sibling::tbody
想要定位“版块主题”下方的第一个tbody可以使用:
//tbody[@id="separatorline"]/following-sibling::tbody[1]
想要定位“版块主题”下方的第N个tbody可以使用:
//tbody[@id="separatorline"]/following-sibling::tbody[N]
五、xpath运算符
运算符 | 描述 | 实例 | 返回值 |
---|---|---|---|
| | 计算两个节点集 | //book | //cd | 返回所有拥有 book 和 cd 元素的节点集 |
= | 等于 | price=9.80 |
如果 price 是 9.80,则返回 true。 如果 price 是 9.90,则返回 false。 |
!= | 不等于 | price!=9.80 |
如果 price 是 9.90,则返回 true。 如果 price 是 9.80,则返回 false。 |
< | 小于 | price<9.80 |
如果 price 是 9.00,则返回 true。 如果 price 是 9.90,则返回 false。 |
<= | 小于或等于 | price<=9.80 |
如果 price 是 9.00,则返回 true。 如果 price 是 9.90,则返回 false。 |
> | 大于 | price>9.80 |
如果 price 是 9.90,则返回 true。 如果 price 是 9.80,则返回 false。 |
>= | 大于或等于 | price>=9.80 |
如果 price 是 9.90,则返回 true。 如果 price 是 9.70,则返回 false。 |
or | 或 | price=9.80 or price=9.70 |
如果 price 是 9.80,则返回 true。 如果 price 是 9.50,则返回 false。 |
and | 与 | price>9.00 and price<9.90 |
如果 price 是 9.80,则返回 true。 如果 price 是 8.50,则返回 false。 |
最近有点小浮躁,静不下心来~~~
想要记录自己学习的每一个过程,便于自己查阅,或许也可以帮助正迷惑的你。
最近推荐一个插件xpath helper,在使用xpath定位元素时十分的方便。
使用xpath定位元素相关推荐
- xpath定位元素方法_测试数十次,总结了APP元素定位的万能方法
定位不到元素时候,一定很头大,最近一直在跑自动化流程,经常因为各种原因定位不到元素,经过数十次的尝试,我发现尤其是H5页面,出现定位不到元素的可能性更大,也总结尝试发现了在H5里面,通过切换上下文后用 ...
- selenium自学笔记---ecshop购买脚本 xpath定位元素(下拉框,单选框)
本机环境:xamppv3.2.1+ecshop3.0 1.元素定位写对,却一直报错,发现是页面元素加载的太慢,所以加上延时 from selenium import webdriverimport t ...
- python xpath定位元素方法_Python爬虫杂记 - Xpath高级用法
xpath 高级用法 1. 匹配当前节点下的所有: .// . 表示当前 // 表示当前标签下的所有标签 注: 要配合使用 2. 匹配某标签的属性值: /@属性名称 这里以input里的value值为 ...
- 使用xpath定位元素,报Message: invalid argument: invalid locator
在用selenium进行Web UI自动化过程中,通过把yaml封装来进行数据传参,使用xpath方法进行元素定位时,报错:selenium.common.exceptions.InvalidArgu ...
- Selenium使用xpath定位元素
参考资料: [web自动化测试]xpath元素定位 核心用法 接下来是使用 xpath 必须掌握的核心知识点,只要掌握好这些知识点,基本上能定义到想要的元素. //input[@name='accou ...
- python xpath定位元素方法_二、appium+python xpath、android_uiautomator定位元素的方法
1.继承webdriver的几个常见的定位方法 a.find_element_by_id("id") b.find_element_by_name() #text值,appium ...
- Chrome如何使用xpath定位元素
打开扩展程序 打开chrome的配置页面 - 如下图 点击右上方的配置 - 工具 - 扩展程序 xPath helper是一款Chrome浏览器的开发者插件,安装了xPath helper后就能轻松获 ...
- python xpath定位元素方法_python--通过xpath相对节点位置查找元素(续)
之前写过相对父元素及下一个兄弟元素的方法. 这次补充一下xpath相对节点位置查找元素的所有方法.例子就不举了,自己可以去练练. xpath相对节点查找方法: 1.xpath('./ancestor: ...
- xpath定位元素详解
目录 一.使用标签+元素属性定位 二.使用文本内容匹配 三.其他定位方式 一.使用标签+元素属性定位 目标:定位到下图中第三个徽章元素 以上图标签为例 定位id='asideProfile'的标签 / ...
最新文章
- RXJAVA之变换操作
- golang 映射 map 简介
- NetBeans工具学习之道:NetBeans的(默认)快捷键
- python3安装scrapy及使用方法(爬虫框架)
- Javascript模块化编程系列二: 模块化的标准化(CommonJS AMD)
- PHP100个知识点之2 日期时间(一)
- C++笔记------static 和 const 在类中用法
- matlab车流量检测,求解释代码,一段交通车流量检测的代码
- Ansys workbench有限元分析学习软件下载
- 【0709作业】简易的购房商贷月供计算器
- UE4 虚幻引擎,光照系统。BP_Sky_Sphere 白天黑夜效果
- java 整型数组定义_JAVA数组的定义及用法
- Presto架构和使用总结
- UHL IOL NVMe测试工具安装及使用的常见问题
- Kotlin Sealed 是什么?为什么 Google 都用
- Tomcat无法启动,报错java.lang.NoClassDefFoundError: or...
- 白领加薪升迁九大高招
- lerna管理多项目
- 小学计算机课教学设计加教学反思,小学信息技术优秀教学反思
- 信息系统项目管理师(2022年)—— 重点内容:10大管理、5大过程组、47个过程信息汇总