mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
微调
This commit is contained in:
parent
58dc683fd5
commit
7d7dfb2dd1
@ -51,7 +51,7 @@ def get_ele_txt(e) -> str:
|
|||||||
str_list.append(el)
|
str_list.append(el)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if sub('[ \n\t]', '', el) != '': # 字符除了回车和空格还有其它内容
|
if sub('[ \n\t\r]', '', el) != '': # 字符除了回车和空格还有其它内容
|
||||||
txt = el
|
txt = el
|
||||||
if not pre:
|
if not pre:
|
||||||
txt = txt.replace('\n', ' ').strip(' ')
|
txt = txt.replace('\n', ' ').strip(' ')
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
[paths]
|
[paths]
|
||||||
chromedriver_path = chromedriver75.exe
|
chromedriver_path =
|
||||||
tmp_path = D:\python\projects\DrissionPage\DrissionPage\tmp
|
tmp_path = D:\python\projects\DrissionPage\DrissionPage\tmp
|
||||||
|
|
||||||
[chrome_options]
|
[chrome_options]
|
||||||
debugger_address = 127.0.0.1:9222
|
debugger_address =
|
||||||
binary_location = D:\python\Google Chrome\Chrome\chrome.exe
|
binary_location =
|
||||||
arguments = ['--no-sandbox', '--disable-gpu', '--ignore-certificate-errors', '--disable-infobars']
|
arguments = ['--no-sandbox', '--disable-gpu', '--ignore-certificate-errors', '--disable-infobars']
|
||||||
extensions = []
|
extensions = []
|
||||||
experimental_options = {'prefs': {'profile.default_content_settings.popups': 0, 'profile.default_content_setting_values': {'notifications': 2}, 'plugins.plugins_list': [{'enabled': False, 'name': 'Chrome PDF Viewer'}]}, 'useAutomationExtension': False, 'excludeSwitches': ['enable-automation']}
|
experimental_options = {'prefs': {'profile.default_content_settings.popups': 0, 'profile.default_content_setting_values': {'notifications': 2}, 'plugins.plugins_list': [{'enabled': False, 'name': 'Chrome PDF Viewer'}]}, 'useAutomationExtension': False, 'excludeSwitches': ['enable-automation']}
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
# 获取元素信息
|
||||||
|
|
||||||
```python
|
```python
|
||||||
element.html # 返回元素 outerHTML
|
element.html # 返回元素 outerHTML
|
||||||
element.inner_html # 返回元素 innerHTML
|
element.inner_html # 返回元素 innerHTML
|
||||||
|
@ -9,6 +9,30 @@ shadow-root 的 shadow_root 属性。获取到的元素可继续用这些方法
|
|||||||
|
|
||||||
d 模式获取元素的方法内置了等待,默认使用元素所属页面的超时设置,也可用在每次获取元素时单独设置等待时间。
|
d 模式获取元素的方法内置了等待,默认使用元素所属页面的超时设置,也可用在每次获取元素时单独设置等待时间。
|
||||||
|
|
||||||
|
简单示例:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from DrissionPage import MixPage
|
||||||
|
|
||||||
|
page = MixPage('s')
|
||||||
|
page.get('https://gitee.com/explore')
|
||||||
|
|
||||||
|
ul_ele = page.ele('tag:ul@@text():全部推荐项目') # 获取包含“全部推荐项目”文本的 ul 元素
|
||||||
|
titles = ul_ele.eles('tag:a') # 获取该 ul 元素下所有 a 元素
|
||||||
|
|
||||||
|
for i in titles: # 遍历列表,打印每个 a 元素的文本
|
||||||
|
print(i.text)
|
||||||
|
|
||||||
|
"""输出:
|
||||||
|
全部推荐项目
|
||||||
|
前沿技术
|
||||||
|
智能硬件
|
||||||
|
IOT/物联网/边缘计算
|
||||||
|
车载应用
|
||||||
|
以下省略……
|
||||||
|
"""
|
||||||
|
```
|
||||||
|
|
||||||
# 方法和属性
|
# 方法和属性
|
||||||
|
|
||||||
## ele()
|
## ele()
|
||||||
@ -16,14 +40,19 @@ d 模式获取元素的方法内置了等待,默认使用元素所属页面的
|
|||||||
此方法用于查找并返回第一个匹配的元素,d 模式下返回 DriverElement,s 模式下返回 SessionElement,用 xpath 获取元素属性时,直接返回属性文本。查找不到结果则返回 None。
|
此方法用于查找并返回第一个匹配的元素,d 模式下返回 DriverElement,s 模式下返回 SessionElement,用 xpath 获取元素属性时,直接返回属性文本。查找不到结果则返回 None。
|
||||||
|
|
||||||
```python
|
```python
|
||||||
ele = page.ele('search text') # 在页面下查找元素
|
ele1 = page.ele('search text') # 在页面内查找元素
|
||||||
ele2 = ele1.ele('search text') # 在元素下查找后代元素
|
ele2 = ele1.ele('search text') # 在元素内查找后代元素
|
||||||
```
|
```
|
||||||
|
|
||||||
## eles()
|
## eles()
|
||||||
|
|
||||||
此方法与 ele() 相似,但返回的是匹配到的所有元素组成的列表,用 xpath 获取元素属性时,返回属性文本组成的列表。
|
此方法与 ele() 相似,但返回的是匹配到的所有元素组成的列表,用 xpath 获取元素属性时,返回属性文本组成的列表。
|
||||||
|
|
||||||
|
```python
|
||||||
|
p_eles = ele.eles('tag:p') # 获取 ele 元素内的所有 p 元素
|
||||||
|
p1 = p_eles[0] # 获取第一个 p 元素
|
||||||
|
```
|
||||||
|
|
||||||
## s_ele()
|
## s_ele()
|
||||||
|
|
||||||
此方法用于在一个元素下查找后代元素,以 SessionElement 形式返回结果(xpath 获取属性值时依然是返回 str),也可以直接将一个元素转换为 SessionElement 版本。
|
此方法用于在一个元素下查找后代元素,以 SessionElement 形式返回结果(xpath 获取属性值时依然是返回 str),也可以直接将一个元素转换为 SessionElement 版本。
|
||||||
@ -46,32 +75,47 @@ ele = page.s_ele('search text') # 在页面下查找元素,并以 SessionElem
|
|||||||
|
|
||||||
此属性返回当前元素的后一个兄弟元素。
|
此属性返回当前元素的后一个兄弟元素。
|
||||||
|
|
||||||
|
```python
|
||||||
|
ele2 = ele1.next # 获取 ele1 后面一个兄弟元素
|
||||||
|
```
|
||||||
|
|
||||||
## prev
|
## prev
|
||||||
|
|
||||||
此属性返回当前元素的前一个兄弟元素。
|
此属性返回当前元素的前一个兄弟元素。
|
||||||
|
|
||||||
|
```python
|
||||||
|
ele2 = ele1.prev # 获取 ele1 前面一个兄弟元素
|
||||||
|
```
|
||||||
|
|
||||||
## parent
|
## parent
|
||||||
|
|
||||||
此属性返回当前元素的父元素。
|
此属性返回当前元素的父元素。
|
||||||
|
|
||||||
|
```python
|
||||||
|
ele2 = ele1.parent # 获取 ele1 的父元素
|
||||||
|
```
|
||||||
|
|
||||||
## nexts()
|
## nexts()
|
||||||
|
|
||||||
此方法返回当前元素后面第若干个兄弟元素。
|
此方法返回当前元素后面第若干个兄弟元素。
|
||||||
|
|
||||||
|
```python
|
||||||
|
ele2 = ele1.nexts(3) # 获取 ele1 后面第三个兄弟元素
|
||||||
|
```
|
||||||
|
|
||||||
## prevs()
|
## prevs()
|
||||||
|
|
||||||
此方法返回当前元素前面第若干个兄弟元素。
|
此方法返回当前元素前面第若干个兄弟元素。
|
||||||
|
|
||||||
|
```python
|
||||||
|
ele2 = ele1.prevs(3) # 获取 ele1 前面第三个兄弟元素
|
||||||
|
```
|
||||||
|
|
||||||
## parents()
|
## parents()
|
||||||
|
|
||||||
此方法返回当前元素第若干层祖先元素。
|
此方法返回当前元素第若干层祖先元素。
|
||||||
|
|
||||||
```python
|
```python
|
||||||
ele2 = ele1.next # 获取 ele1 后面一个兄弟元素
|
|
||||||
ele2 = ele1.prev # 获取 ele1 前面一个兄弟元素
|
|
||||||
ele2 = ele1.parent # 获取 ele1 的父元素
|
|
||||||
ele2 = ele1.nexts(3) # 获取 ele1 后面第三个兄弟元素
|
|
||||||
ele2 = ele1.prevs(3) # 获取 ele1 前面第三个兄弟元素
|
|
||||||
ele2 = ele1.parents(3) # 获取 ele1 上面 3 层父元素
|
ele2 = ele1.parents(3) # 获取 ele1 上面 3 层父元素
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -183,8 +227,12 @@ ele2 = ele1.ele('tag:div') # 定位 div 元素
|
|||||||
ele2 = ele1.ele('tag:div@class=cls') # 定位 class 属性为 cls 的 div 元素
|
ele2 = ele1.ele('tag:div@class=cls') # 定位 class 属性为 cls 的 div 元素
|
||||||
ele2 = ele1.ele('tag:div@text()=text') # 定位文本为 text 的 div 元素
|
ele2 = ele1.ele('tag:div@text()=text') # 定位文本为 text 的 div 元素
|
||||||
ele2 = ele1.ele('tag:div@@class=cls@@text()=text') # 定位 class 属性为 cls 且文本为 text 的 div 元素
|
ele2 = ele1.ele('tag:div@@class=cls@@text()=text') # 定位 class 属性为 cls 且文本为 text 的 div 元素
|
||||||
|
ele2 = ele1.ele('tag:div@text():text') # 查找直接文本节点包含 text 字符串的 div 元素
|
||||||
|
ele2 = ele1.ele('tag:div@@text():text') # 查找内部文本节点包含 text 字符串的 div 元素
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Tips:** 注意, `'tag:div@text():text'` 和 `'tag:div@@text():text'` 是有区别的,前者只在 div 的直接文本节点搜索,后者搜索 div 的整个内部。
|
||||||
|
|
||||||
## css
|
## css
|
||||||
|
|
||||||
表示用 css selector 方式查找元素。css: 与 css= 效果一致。
|
表示用 css selector 方式查找元素。css: 与 css= 效果一致。
|
||||||
@ -196,15 +244,21 @@ ele2 = ele1.ele('css:>div') # 查找 div 子元素元素,这个写法是本
|
|||||||
|
|
||||||
## xpath
|
## xpath
|
||||||
|
|
||||||
表示用 xpath 方式查找元素。xpath: 与 xpath= 效果一致。
|
表示用 xpath 方式查找元素。xpath: 与 xpath= 效果一致。
|
||||||
|
该方法支持完整的 xpath 语法,能使用 xpath 直接获取元素属性,selenium 不支持这种用法。
|
||||||
|
|
||||||
```python
|
```python
|
||||||
ele2 = ele1.ele('xpath:.//div') # 查找 div 元素
|
ele2 = ele1.ele('xpath:.//div') # 查找 div 元素
|
||||||
ele2 = ele1.ele('xpath://div') # 和上面一行一样,查找元素的后代时,// 前面的 . 可以省略
|
ele2 = ele1.ele('xpath://div') # 和上面一行一样,查找元素的后代时,// 前面的 . 可以省略
|
||||||
|
txt = ele1.ele('xpath://div/@class') # 获取 div 元素的 class 属性,返回字符串
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Tips:** 查找元素的后代时,// 前面的 . 可以省略。
|
||||||
|
|
||||||
## selenium 的 loc 元组
|
## selenium 的 loc 元组
|
||||||
|
|
||||||
|
查找方法能直接接收 selenium 原生定位元组进行查找,s 模式下也支持这种写法。
|
||||||
|
|
||||||
```python
|
```python
|
||||||
loc1 = By.ID, 'ele_id'
|
loc1 = By.ID, 'ele_id'
|
||||||
loc2 = By.XPATH, '//div[@class="ele_class"]'
|
loc2 = By.XPATH, '//div[@class="ele_class"]'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user