mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
修改文档
This commit is contained in:
parent
170cea4c40
commit
beb381e558
@ -21,7 +21,7 @@ requests 爬虫面对要登录的网站时,要分析数据包、JS 源码,
|
||||
|
||||
# 特性和亮点
|
||||
|
||||
作者有多年自动化和爬虫经验,踩过无数坑,总结出的经验全写到这个库里了。内置了N多实用功能,对常用功能作了整合和优化。
|
||||
作者有多年自动化和爬虫经验,踩过无数坑,总结出的经验全写到这个库里了。内置了 N 多实用功能,对常用功能作了整合和优化。
|
||||
|
||||
## 特性
|
||||
|
||||
@ -34,7 +34,7 @@ requests 爬虫面对要登录的网站时,要分析数据包、JS 源码,
|
||||
## 亮点功能
|
||||
|
||||
- 每次运行程序可以反复使用已经打开的浏览器。如手动设置网页到某个状态,再用程序接管,或手动处理登录,再用程序爬内容。无须每次运行从头启动浏览器,超级方便。
|
||||
- 使用 ini 文件保存常用配置,自动调用,也提供便捷的设置api,远离繁杂的配置项。
|
||||
- 使用 ini 文件保存常用配置,自动调用,也提供便捷的设置 api,远离繁杂的配置项。
|
||||
- 极致简明的定位语法,支持直接按文本定位元素,支持直接获取前后兄弟元素和父元素等。
|
||||
- 强大的下载工具,操作浏览器时也能享受快捷可靠的下载功能。
|
||||
- 下载工具支持多种方式处理文件名冲突、自动创建目标路径、断链重试等。
|
||||
|
@ -1,36 +1,37 @@
|
||||
* [简介](简介.md)
|
||||
* ⭐️[简介](简介.md)
|
||||
|
||||
* 入门指南
|
||||
* [基本概念](入门指南\基本概念.md)
|
||||
* [快速上手](入门指南\快速上手.md)
|
||||
* 特性演示
|
||||
* [与 requests 对比](入门指南\特性演示\与requests代码对比.md)
|
||||
* [与 selenium 对比](入门指南\特性演示\与selenium代码对比.md)
|
||||
* [模式切换](入门指南\特性演示\模式切换.md)
|
||||
* [获取并打印元素属性](入门指南\特性演示\获取并打印元素属性.md)
|
||||
* [下载文件](入门指南\特性演示\下载文件.md)
|
||||
* 🧭入门指南
|
||||
* 💡[基本概念](入门指南\基本概念.md)
|
||||
* 🖐🏻[快速上手](入门指南\快速上手.md)
|
||||
* 🎭特性演示
|
||||
* 🐙[与 requests 对比](入门指南\特性演示\与requests代码对比.md)
|
||||
* 🐟[与 selenium 对比](入门指南\特性演示\与selenium代码对比.md)
|
||||
* 🦈[模式切换](入门指南\特性演示\模式切换.md)
|
||||
* 🐳[获取并打印元素属性](入门指南\特性演示\获取并打印元素属性.md)
|
||||
* 🐳[下载文件](入门指南\特性演示\下载文件.md)
|
||||
|
||||
* 使用方法
|
||||
* [创建页面对象](使用方法\创建页面对象.md)
|
||||
* [访问网页](使用方法\访问网页.md)
|
||||
* [查找页面元素](使用方法\查找页面元素.md)
|
||||
* [获取元素信息](使用方法\获取元素信息.md)
|
||||
* [元素操作](使用方法\元素操作.md)
|
||||
* [获取网页信息](使用方法\获取网页信息.md)
|
||||
* [页面操作](使用方法\页面操作.md)
|
||||
* 启动配置
|
||||
* [概述](使用方法\启动配置\概述.md)
|
||||
* [Chrome 启动配置]('使用方法\启动配置\Chrome启动配置.md')
|
||||
* [Session 启动配置](使用方法\启动配置\Session启动配置.md)
|
||||
* [使用配置文件](使用方法\启动配置\使用配置文件.md)
|
||||
* [下载文件](使用方法\下载文件.md)
|
||||
* [cookies 的使用](使用方法\cookies的使用.md)
|
||||
* [Drission 对象](使用方法\Drission对象.md)
|
||||
* [对接 selenium 及 requests 代码](使用方法\对接selenium及requests代码.md)
|
||||
* [使用其它浏览器](使用方法\使用其它浏览器.md)
|
||||
* [DriverPage 和 SessionPage](使用方法\DriverPage和SessionPage.md)
|
||||
* [打包程序](使用方法\打包程序.md)
|
||||
* 🔠使用方法
|
||||
* 🐵[创建页面对象](使用方法\创建页面对象.md)
|
||||
* 🦊[访问网页](使用方法\访问网页.md)
|
||||
* 🐶[查找页面元素](使用方法\查找页面元素.md)
|
||||
* 🦝[获取元素信息](使用方法\获取元素信息.md)
|
||||
* 🐱[元素操作](使用方法\元素操作.md)
|
||||
* 🐮[获取网页信息](使用方法\获取网页信息.md)
|
||||
* 🐷[页面操作](使用方法\页面操作.md)
|
||||
* 🐻启动配置
|
||||
* 🐉[概述](使用方法\启动配置\概述.md)
|
||||
* 🦖[Chrome 启动配置]('使用方法\启动配置\Chrome启动配置.md')
|
||||
* 🦕[Session 启动配置](使用方法\启动配置\Session启动配置.md)
|
||||
* 🐊[使用配置文件](使用方法\启动配置\使用配置文件.md)
|
||||
* 🐼[下载文件](使用方法\下载文件.md)
|
||||
* 🐨[cookies 的使用](使用方法\cookies的使用.md)
|
||||
* 🐰[Drission 对象](使用方法\Drission对象.md)
|
||||
* 🐹[对接 selenium 及 requests 代码](使用方法\对接selenium及requests代码.md)
|
||||
* 🦇[使用其它浏览器](使用方法\使用其它浏览器.md)
|
||||
* 🦒[DriverPage 和 SessionPage](使用方法\DriverPage和SessionPage.md)
|
||||
* 🐭[打包程序](使用方法\打包程序.md)
|
||||
|
||||
* ✨️[Tips大集合](Tips大集合.md)
|
||||
* 🎯️[版本历史](版本历史.md)
|
||||
* 💐[鸣谢](鸣谢.md)
|
||||
|
||||
* [Tips大集合](Tips大集合.md)
|
||||
* [版本历史](版本历史.md)
|
||||
* [鸣谢](鸣谢.md)
|
@ -9,7 +9,7 @@
|
||||
- 根据 DOM 结构相对定位
|
||||
- 根据页面布局位置相对定位
|
||||
|
||||
d 模式的元素还有专门用于处理 shadow dom 的 `shadow_root` 属性。获取到的元素可继续用这些方法获取后代元素,使用方法和普通元素一致。
|
||||
d 模式的元素还有专门用于处理 shadow dom 的`shadow_root`属性。获取到的元素可继续用这些方法获取后代元素,使用方法和普通元素一致。
|
||||
|
||||
# 示例
|
||||
|
||||
@ -97,7 +97,7 @@ IOT/物联网/边缘计算
|
||||
|
||||
## ele()
|
||||
|
||||
此方法用于查找并返回第一个匹配的元素,d 模式下返回 DriverElement,s 模式下返回 SessionElement,用 xpath 获取元素属性时,直接返回属性文本。查找不到结果则返回 None。
|
||||
此方法用于查找并返回第一个匹配的元素,d 模式下返回`DriverElement`,s 模式下返回`SessionElement`,用 xpath 获取元素属性时,直接返回属性文本。查找不到结果则返回`None`。
|
||||
|
||||
参数:
|
||||
|
||||
@ -105,7 +105,7 @@ IOT/物联网/边缘计算
|
||||
- loc_or_ele(页面对象拥有):元素的定位信息,可以是元素对象,loc 元组,或查询字符串
|
||||
- timeout:查找元素超时时间,默认与元素所在页面等待时间一致,s 模式下无效
|
||||
|
||||
返回:s 模式下返回 SessionElement,d 模式下返回 DriverElement,或用 xpath 获取到的属性值
|
||||
返回:s 模式下返回`SessionElement`,d 模式下返回`DriverElement`,或用 xpath 获取到的属性值
|
||||
|
||||
```python
|
||||
# 在页面内查找元素
|
||||
@ -122,14 +122,14 @@ class = ele1.ele('xpath://div/@class')
|
||||
|
||||
## eles()
|
||||
|
||||
此方法与 ele() 相似,但返回的是匹配到的所有元素组成的列表,用 xpath 获取元素属性时,返回属性文本组成的列表。
|
||||
此方法与`ele()`相似,但返回的是匹配到的所有元素组成的列表,用 xpath 获取元素属性时,返回属性文本组成的列表。
|
||||
|
||||
参数:
|
||||
|
||||
- loc_or_str:元素的定位信息,可以是loc元组,或查询字符串
|
||||
- loc_or_str:元素的定位信息,可以是 loc 元组,或查询字符串
|
||||
- timeout:查找元素超时时间,默认与元素所在页面等待时间一致,s 模式下无效
|
||||
|
||||
返回:s 模式下返回 SessionElement 组成的列表,d 模式下返回 DriverElement 组成的列表,或用 xpath 获取到的属性值组成的列表
|
||||
返回:s 模式下返回`SessionElement`组成的列表,d 模式下返回`DriverElement`组成的列表,或用 xpath 获取到的属性值组成的列表
|
||||
|
||||
```python
|
||||
# 获取 ele 元素内的所有 p 元素
|
||||
@ -142,18 +142,18 @@ print(p_eles[0])
|
||||
|
||||
## s_ele()
|
||||
|
||||
此方法用于在一个元素下查找后代元素,以 SessionElement 形式返回结果(xpath 获取属性值时依然是返回 str),也可以直接将一个元素或页面转换为 SessionElement 版本。
|
||||
此方法用于在一个元素下查找后代元素,以`SessionElement`形式返回结果(xpath 获取属性值时依然是返回`str`),也可以直接将一个元素或页面转换为`SessionElement`版本。
|
||||
|
||||
这是为了 d 模式处理速度的提升,当爬取复杂页面信息而且不须要和元素进行交互时,生成整个页面或者主要容器元素的 SessionElement ,再在其中获取信息,可以将速度提升几个数量级。
|
||||
这是为了 d 模式处理速度的提升,当爬取复杂页面信息而且不须要和元素进行交互时,生成整个页面或者主要容器元素的`SessionElement`,再在其中获取信息,可以将速度提升几个数量级。
|
||||
|
||||
s 模式下这个方法和 ele() 是一样的。
|
||||
s 模式下这个方法和`ele()`是一样的。
|
||||
|
||||
参数:
|
||||
|
||||
- loc_or_str(元素对象拥有):元素的定位信息,可以是 loc 元组,或查询字符串。为 None 时直接返回当前元素的 SessionElemnet 版本
|
||||
- loc_or_ele(页面对象拥有):元素的定位信息,可以是 loc 元组,或查询字符串。为 None 时直接返回当前页面的 SessionElemnet 版本
|
||||
- loc_or_str(元素对象拥有):元素的定位信息,可以是 loc 元组,或查询字符串。为`None`时直接返回当前元素的`SessionElemnet`版本
|
||||
- loc_or_ele(页面对象拥有):元素的定位信息,可以是 loc 元组,或查询字符串。为`None`时直接返回当前页面的 `SessionElemnet`版本
|
||||
|
||||
返回:SessionElement,或用 xpath 获取到的属性值
|
||||
返回:`SessionElement`,或用 xpath 获取到的属性值
|
||||
|
||||
```python
|
||||
# 获取元素或页面的的 SessionElement 版本
|
||||
@ -167,15 +167,19 @@ ele2 = ele1.s_ele('search text')
|
||||
ele = page.s_ele('search text')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## s_eles()
|
||||
|
||||
此方法与 s_ele() 相似,但返回的是匹配到的所有元素组成的列表,或属性值组成的列表。
|
||||
此方法与`s_ele()`相似,但返回的是匹配到的所有元素组成的列表,或属性值组成的列表。
|
||||
|
||||
参数:
|
||||
|
||||
- loc_or_str:元素的定位信息,可以是 loc 元组,或查询字符串(必填)
|
||||
|
||||
返回:SessionElement 组成的列表,或用 xpath 获取到的属性值组成的列表
|
||||
返回:`SessionElement`组成的列表,或用 xpath 获取到的属性值组成的列表
|
||||
|
||||
|
||||
|
||||
## active_ele
|
||||
|
||||
@ -185,11 +189,12 @@ ele = page.s_ele('search text')
|
||||
ele = page.active_ele
|
||||
```
|
||||
|
||||
|
||||
|
||||
## shadow_root
|
||||
|
||||
DriverElement 元素除了以上方法和属性外,还有 shadow_root 属性,用于获取其内部的 shadow_root 元素。
|
||||
该属性返回的是一个 ShadowRootElement,类似于 DriverElement,功能比 DriverElement 少。但也有 ele() 和 eles() 方法,可直接搜索其下的元素,返回 DriverElement 元素。
|
||||
该 DriverElement 和普通的没有区别。
|
||||
`DriverElement`元素除了以上方法和属性外,还有`shadow_root`属性,用于获取其内部的 shadow_root 元素。
|
||||
该属性返回的是一个`ShadowRootElement`,类似于`DriverElement`,功能比`DriverElement`少。但也有`ele()`和`eles()`方法,可直接搜索其下的元素,返回 `DriverElement`元素。返回的`DriverElement`和普通的没有区别。
|
||||
|
||||
```python
|
||||
# 获取一个元素下是 shadow root
|
||||
@ -202,22 +207,27 @@ ele1.click()
|
||||
|
||||
# 查找语法
|
||||
|
||||
我们使用一套简洁高效的语法去定位元素,大大简化了定位元素的代码量,增强了功能,也兼容 css selector、xpath、selenium 原生的 loc 元组(s 模式也能用)。d 模式和 s
|
||||
模式定位元素的语法是完全一样的,便于模式切换时平滑过渡。
|
||||
我们使用一套简洁高效的语法去定位元素,大大简化了定位元素的代码量,增强了功能,也兼容 css selector、xpath、selenium 原生的 loc 元组(s 模式也能用)。d 模式和 s 模式定位元素的语法是完全一样的,便于模式切换时平滑过渡。
|
||||
|
||||
**关键字** 是出现在定位语句最左边,用于指明该语句以哪种方式去查找元素,有以下这些:
|
||||
**匹配模式** 指字符串是否完全匹配,有以下两种:
|
||||
|
||||
## =
|
||||
|
||||
表示精确匹配,匹配完全符合的文本或属性。
|
||||
|
||||
|
||||
|
||||
## :
|
||||
|
||||
表示模糊匹配,匹配含有某个字符串的文本或属性。
|
||||
|
||||
|
||||
|
||||
**关键字** 是出现在定位语句最左边,用于指明该语句以哪种方式去查找元素,有以下这些:
|
||||
|
||||
## \#
|
||||
|
||||
表示 id 属性,只在语句最前面且单独使用时生效,可配合 = 或 :。
|
||||
表示`id`属性,只在语句最前面且单独使用时生效,可配合`=`或`:`。
|
||||
|
||||
```python
|
||||
# 在页面中查找 id 属性为 ele_id 的元素
|
||||
@ -227,9 +237,11 @@ ele1 = page.ele('#ele_id')
|
||||
ele2 = ele1.ele('#:ele_id')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## .
|
||||
|
||||
表示 class 属性,只在语句最前面且单独使用时生效,可配合 = 或 :。
|
||||
表示`class`属性,只在语句最前面且单独使用时生效,可配合`=`或`:`。
|
||||
|
||||
```python
|
||||
# 查找 class 属性为 ele_class 的元素
|
||||
@ -239,10 +251,12 @@ ele2 = ele1.ele('.ele_class')
|
||||
ele2 = ele1.ele('.:ele_class')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## @
|
||||
|
||||
表示某个属性,只匹配一个属性。
|
||||
@ 关键字只有一个简单功能,就是匹配 @ 后面的内容,不再对后面的字符串进行解析。因此即使后面的字符串也存在 @ 或 @@,也作为要匹配的内容对待。
|
||||
`@`关键字只有一个简单功能,就是匹配`@`后面的内容,不再对后面的字符串进行解析。因此即使后面的字符串也存在`@`或`@@`,也作为要匹配的内容对待。
|
||||
|
||||
```python
|
||||
# 查找 name 属性为 ele_name 的元素
|
||||
@ -261,20 +275,22 @@ ele2 = ele1.ele('@')
|
||||
ele2 = ele1.ele('@email=abc@def.com')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## @@
|
||||
|
||||
表示某个属性,多属性匹配时使用,个数不限。还能匹配要忽略的元素,匹配文本时也和 @ 不一样。
|
||||
@@ 后跟 - 时,表示 not。如:
|
||||
表示某个属性,多属性匹配时使用,个数不限。还能匹配要忽略的元素,匹配文本时也和`@`不一样。
|
||||
`@@`后跟 - 时,表示 not。如:
|
||||
|
||||
- `@@-name`表示匹配没有 name 属性的元素
|
||||
- `@@-name`表示匹配没有`name`属性的元素
|
||||
|
||||
- `@@-name=ele_name`表示匹配 name 属性不为 ele_name 的元素
|
||||
- `@@-name=ele_name`表示匹配`name`属性不为`ele_name`的元素
|
||||
|
||||
如有以下情况,不能使用此方式,须改用 xpath的方式:
|
||||
如有以下情况,不能使用此方式,须改用 xpath 的方式:
|
||||
|
||||
- 匹配文本或属性中出现 @@
|
||||
- 匹配文本或属性中出现`@@`
|
||||
|
||||
- 属性名本身以 - 开头
|
||||
- 属性名本身以`-`开头
|
||||
|
||||
```python
|
||||
# 查找 name 属性为 name 且 class 属性包含 cls 文本的元素
|
||||
@ -287,9 +303,11 @@ ele2 = ele1.ele('@@-class')
|
||||
ele2 = ele1.ele('@@-name:ele_name')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## text
|
||||
|
||||
要匹配的文本,查询字符串如开头没有任何关键字,也表示根据 text 作模糊查找。
|
||||
要匹配的文本,查询字符串如开头没有任何关键字,也表示根据传入的文本作模糊查找。
|
||||
如果元素内有多个直接的文本节点,精确查找时可匹配所有文本节点拼成的字符串,模糊查找时可匹配每个文本节点。
|
||||
|
||||
```python
|
||||
@ -309,12 +327,14 @@ Tips:若要查找的文本包含`text:` ,可下面这样写,即第一个`t
|
||||
ele2 = page.ele('text:text:')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## text()
|
||||
|
||||
作为查找属性时使用的文本关键字,必须与 @ 或 @@ 配合使用。
|
||||
与 @ 配合和与 @@ 配合使用时,text() 的意义是有差别的。
|
||||
作为查找属性时使用的文本关键字,必须与`@`或`@@`配合使用。
|
||||
与`@`配合和与`@@`配合使用时,`text()`的意义是有差别的。
|
||||
|
||||
@text() 表示在元素的直接子文本节点中匹配,且多个节点不能合并匹配。 @@text() 表示在元素内部所有文本中匹配,且会把元素内部所有文本拼成一个总字符串再进行匹配,因此可以模糊匹配元素里面任意文本。
|
||||
`@text()`表示在元素的直接子文本节点中匹配,且多个节点不能合并匹配。 `@@text()`表示在元素内部所有文本中匹配,且会把元素内部所有文本拼成一个总字符串再进行匹配,因此可以模糊匹配元素里面任意文本。
|
||||
|
||||
```python
|
||||
# 查找文本为 some text 的元素
|
||||
@ -337,9 +357,11 @@ ele = page.ele('text:some text')
|
||||
ele = page.ele('@@text():some text')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## tag
|
||||
|
||||
表示元素的标签,只在语句最前面且单独使用时生效,可与 @ 或 @@ 配合使用。tag: 与 tag= 效果一致。
|
||||
表示元素的标签,只在语句最前面且单独使用时生效,可与`@`或`@@`配合使用。`tag:`与`tag=`效果一致。
|
||||
|
||||
```python
|
||||
# 定位 div 元素
|
||||
@ -361,11 +383,13 @@ ele2 = ele1.ele('tag:div@text():text')
|
||||
ele2 = ele1.ele('tag:div@@text():text')
|
||||
```
|
||||
|
||||
**Tips:** 注意, `'tag:div@text():text'` 和 `'tag:div@@text():text'` 是有区别的,前者只在 div 的直接文本节点搜索,后者搜索 div 的整个内部。
|
||||
**Tips:** 注意, `tag:div@text():text` 和 `tag:div@@text():text` 是有区别的,前者只在`div`的直接文本节点搜索,后者搜索`div`的整个内部。
|
||||
|
||||
|
||||
|
||||
## css
|
||||
|
||||
表示用 css selector 方式查找元素。css: 与 css= 效果一致。
|
||||
表示用 css selector 方式查找元素。`css:`与`css=`效果一致。
|
||||
|
||||
```python
|
||||
# 查找 div 元素
|
||||
@ -375,9 +399,11 @@ ele2 = ele1.ele('css:.div')
|
||||
ele2 = ele1.ele('css:>div')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## xpath
|
||||
|
||||
表示用 xpath 方式查找元素。xpath: 与 xpath= 效果一致。
|
||||
表示用 xpath 方式查找元素。`xpath:`与`xpath=`效果一致。
|
||||
该方法支持完整的 xpath 语法,能使用 xpath 直接获取元素属性,selenium 不支持这种用法。
|
||||
|
||||
```python
|
||||
@ -392,8 +418,9 @@ txt = ele1.ele('xpath://div/@class')
|
||||
```
|
||||
|
||||
**Tips:**
|
||||
查找元素的后代时,selenium 原生代码要求 xpath 前面必须加 . ,否则会变成在全个页面中查找。笔者觉得这个设计是画蛇添足,既然已经通过元素查找了,自然应该只查找这个元素内部的元素。所以,用xpath 在元素下查找时,最前面
|
||||
// 或 / 前面的 . 可以省略。
|
||||
查找元素的后代时,selenium 原生代码要求 xpath 前面必须加`.`,否则会变成在全个页面中查找。笔者觉得这个设计是画蛇添足,既然已经通过元素查找了,自然应该只查找这个元素内部的元素。所以,用 xpath 在元素下查找时,最前面`//`或`/`前面的`.`可以省略。
|
||||
|
||||
|
||||
|
||||
## selenium 的 loc 元组
|
||||
|
||||
@ -411,7 +438,7 @@ ele = page.ele(loc2)
|
||||
|
||||
# 等待
|
||||
|
||||
d 模式下所有查找元素操作都自带等待,默认为跟随元素所在页面 timeout 属性(默认 10 秒),也可以在每次查找时单独设置,单独设置的等待时间不会改变页面原来设置。
|
||||
d 模式下所有查找元素操作都自带等待,默认为跟随元素所在页面`timeout`属性(默认 10 秒),也可以在每次查找时单独设置,单独设置的等待时间不会改变页面原来设置。
|
||||
|
||||
```python
|
||||
# 页面初始化时设置查找元素超时时间为 15 秒
|
||||
@ -452,6 +479,8 @@ ele2 = ele1.parent(2)
|
||||
ele2 = ele1.parent('#id1')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## next()
|
||||
|
||||
此方法返回当前元素后面的某一个兄弟元素,可指定筛选条件和第几个。
|
||||
@ -478,6 +507,8 @@ ele2 = ele1.next(3, 'tag:div')
|
||||
txt = ele1.next(1, 'xpath:text()')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## nexts()
|
||||
|
||||
此方法返回后面全部符合条件的兄弟元素或节点组成的列表,可用查询语法筛选。
|
||||
@ -500,6 +531,8 @@ divs = ele1.nexts('tag:div')
|
||||
txts = ele1.nexts('xpath:text()')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## prev()
|
||||
|
||||
此方法返回当前元素前面的某一个兄弟元素,可指定筛选条件和第几个。
|
||||
@ -526,6 +559,8 @@ ele2 = ele1.prev(3, 'tag:div')
|
||||
txt = ele1.prev(1, 'xpath:text()')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## prevs()
|
||||
|
||||
此方法返回前面全部符合条件的兄弟元素或节点组成的列表,可用查询语法筛选。
|
||||
@ -545,6 +580,8 @@ eles = ele1.prevs()
|
||||
divs = ele1.prevs('tag:div')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## after()
|
||||
|
||||
此方法返回当前元素后面的某一个元素,可指定筛选条件和第几个。这个方法查找范围不局限在兄弟元素间,而是整个 DOM 文档。
|
||||
@ -568,6 +605,8 @@ ele2 = ele1.after(3, 'tag:div')
|
||||
txt = ele1.after(1, 'xpath:text()')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## afters()
|
||||
|
||||
此方法返回后面符合条件的全部元素或节点组成的列表,可用查询语法筛选。这个方法查找范围不局限在兄弟元素间,而是整个 DOM 文档。
|
||||
@ -587,6 +626,8 @@ eles = ele1.prevs()
|
||||
divs = ele1.prevs('tag:div')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## before()
|
||||
|
||||
此方法返回当前元素前面的某一个元素,可指定筛选条件和第几个。这个方法查找范围不局限在兄弟元素间,而是整个 DOM 文档。
|
||||
@ -610,6 +651,8 @@ ele2 = ele1.before(3, 'tag:div')
|
||||
txt = ele1.before(1, 'xpath:text()')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## befores()
|
||||
|
||||
此方法返回前面全部符合条件的元素或节点组成的列表,可用查询语法筛选。这个方法查找范围不局限在兄弟元素间,而是整个 DOM 文档。
|
||||
@ -654,6 +697,8 @@ ele2 = ele1.left(3)
|
||||
ele2 = ele1.left(3, 'tag:div')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## lefts()
|
||||
|
||||
此方法返回左边全部符合条件的元素组成的列表,可用查询语法筛选。
|
||||
@ -672,6 +717,8 @@ eles = ele1.lefts()
|
||||
divs = ele1.lefts('tag:div')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## right()
|
||||
|
||||
此方法返回当前元素左边的某一个元素,可指定筛选条件和第几个。
|
||||
@ -691,6 +738,8 @@ ele2 = ele1.right(3)
|
||||
ele2 = ele1.right(3, 'tag:div')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## rights()
|
||||
|
||||
此方法返回右边全部符合条件的元素组成的列表,可用查询语法筛选。
|
||||
@ -709,6 +758,8 @@ eles = ele1.rights()
|
||||
divs = ele1.rights('tag:div')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## below()
|
||||
|
||||
此方法返回当前元素下边的某一个元素,可指定筛选条件和第几个。
|
||||
@ -728,6 +779,8 @@ ele2 = ele1.below(3)
|
||||
ele2 = ele1.below(3, 'tag:div')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## belows()
|
||||
|
||||
此方法返回下边全部符合条件的元素组成的列表,可用查询语法筛选。
|
||||
@ -746,6 +799,8 @@ eles = ele1.belows()
|
||||
divs = ele1.belows('tag:div')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## above()
|
||||
|
||||
此方法返回当前元素上边的某一个元素,可指定筛选条件和第几个。
|
||||
@ -765,6 +820,8 @@ ele2 = ele1.above(3)
|
||||
ele2 = ele1.above(3, 'tag:div')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## aboves()
|
||||
|
||||
此方法返回上边全部符合条件的元素组成的列表,可用查询语法筛选。
|
||||
@ -783,6 +840,8 @@ eles = ele1.aboves()
|
||||
divs = ele1.aboves('tag:div')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## near()
|
||||
|
||||
此方法返回最接近当前元素的某一个元素,可指定筛选条件和第几个。
|
||||
@ -802,6 +861,8 @@ ele2 = ele1.near(3)
|
||||
ele2 = ele1.near(3, 'tag:div')
|
||||
```
|
||||
|
||||
|
||||
|
||||
## nears()
|
||||
|
||||
此方法返回该元素附近全部符合条件的元素组成的列表,可用查询语法筛选。
|
||||
@ -825,7 +886,7 @@ divs = ele1.nears('tag:div')
|
||||
为进一步精简代码,对语法进行了精简
|
||||
|
||||
- 定位语法都有其简化形式。
|
||||
- 页面和元素对象都实现了 \_\_call\_\_() 方法,可直接调用。
|
||||
- 页面和元素对象都实现了`__call__()`方法,可直接调用。
|
||||
- 所有查找方法都支持链式操作
|
||||
|
||||
示例:
|
||||
@ -857,7 +918,7 @@ ele2 = ele1('x://div[@class="ele_class"]')
|
||||
|
||||
# Tips
|
||||
|
||||
- 从一个 DriverElement 元素获取到的 SessionElement 版本,依然能够使用相对定位方法定位祖先或兄弟元素。
|
||||
- SessionElement 和 SessionPage 的 ele() 和 eles() 方法也有 timeout 参数,但它是不生效的,仅用于保持与 d 模式元素书写一致,便于无差别的调用。
|
||||
- 从一个`DriverElement`元素获取到的`SessionElement`版本,依然能够使用相对定位方法定位祖先或兄弟元素。
|
||||
- `SessionElement`和`SessionPage`的`ele()`和`eles()`方法也有`timeout`参数,但它是不生效的,仅用于保持与 d 模式元素书写一致,便于无差别的调用。
|
||||
- 定位语句内容与关键字重复时,请使用 xpath 或 css selector 代替。
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user