mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
240 lines
6.0 KiB
Markdown
240 lines
6.0 KiB
Markdown
页面对象共有以下几种:
|
||
|
||
- `WebPage`:可在 s 和 d 模式之间切换,整合两种模式
|
||
|
||
- `ChromiumPage`:单纯用于操作浏览器,工作于 d 模式
|
||
|
||
- `ChromiumTab`:浏览器标签页对象,用于支持同时操作个多标签页
|
||
|
||
- `ChromiumFrame`:`<iframe>`元素对象,专门用于操作该元素
|
||
|
||
- `SessionPage`:单纯用于收发数据包,工作于 s 模式
|
||
|
||
各种页面对象使用方法是一致的,以下用`WebPage`按两种模式介绍。d 模式包含 s模式所有属性。
|
||
|
||
`ChromiumTab`和`ChromiumFrame`具体用法将在后面章节单独介绍。
|
||
|
||
# ✔️ 运行状态信息
|
||
|
||
## 📍 `url`
|
||
|
||
此属性返回当前访问的 url,两种模式均支持。
|
||
|
||
## 📍 `address`
|
||
|
||
此属性返回当前对象控制的页面地址和端口,仅用于 d 模式。
|
||
|
||
```python
|
||
print(page.address)
|
||
# 输出:127.0.0.1:9222
|
||
```
|
||
|
||
## 📍 `tab_id`
|
||
|
||
此属性返回当前标签页的 id,仅用于 d 模式。
|
||
|
||
## 📍 `mode`
|
||
|
||
此属性返回当前页面对象的模式,`'s'`或`'d'`。
|
||
|
||
## 📍 `process_id`
|
||
|
||
此属性返回浏览器进程 id,仅用于 d 模式。
|
||
|
||
## 📍 `is_loading`
|
||
|
||
此属性返回页面是否正在加载状态,仅用于 d 模式。
|
||
|
||
## 📍 `ready_state`
|
||
|
||
此属性返回页面当前加载状态,有 3 种:`'loading'`、`'interactive'`、`'complete'`,仅用于 d 模式。
|
||
|
||
## 📍 `url_available`
|
||
|
||
此属性以布尔值返回当前链接是否可用,两种模式均支持。
|
||
|
||
# ✔️ 窗口及页面信息
|
||
|
||
## 📍 `size`
|
||
|
||
此属性以`tuple`返回页面尺寸,仅用于 d 模式。格式:(宽度, 高度)。
|
||
|
||
## 📍 `tabs_count`
|
||
|
||
此属性返回当前浏览器标签页数量,仅用于 d 模式。
|
||
|
||
## 📍 `tabs`
|
||
|
||
此属性以列表形式返回当前浏览器所有标签页 id,仅用于 d 模式。
|
||
|
||
## 📍 `html`
|
||
|
||
此属性返回当前页面 html 文本,两种模式均支持。
|
||
|
||
## 📍 `json`
|
||
|
||
此属性把请求内容解析成 json,两种模式均支持。
|
||
比如请求接口时,返回内容是 json 格式,那就可以用这个属性获取。
|
||
事实上,用`html`属性获取也是可以的,不过`html`属性没有对文本进行解析。
|
||
|
||
## 📍 `title`
|
||
|
||
此属性返回当前页面`title`文本,两种模式均支持。
|
||
|
||
# ✔️ 配置参数信息
|
||
|
||
## 📍 `timeout`
|
||
|
||
s 模式下,此属性代表网络请求超时时间。
|
||
d 模式下,此属性为元素查找、点击、处理提示框等操作的超时时间。
|
||
默认为 10,可对其赋值。
|
||
|
||
```python
|
||
# 创建 MixPage 对象时指定
|
||
page = WebPage(timeout=5)
|
||
|
||
# 修改 timeout
|
||
page.timeout = 20
|
||
```
|
||
|
||
## 📍 `timeouts`
|
||
|
||
此属性以字典方式返回三种超时时间,仅用于 d 模式。
|
||
`'implicit'`用于元素查找、点击重试、输入文本重试、处理弹出框重试等;
|
||
`'page_load'`用于等待页面加载;
|
||
`'script'`用于等待脚本执行。
|
||
|
||
```python
|
||
print(page.timeouts)
|
||
```
|
||
|
||
输出:
|
||
|
||
```
|
||
{'implicit': 10, 'pageLoad': 30.0, 'script': 30.0}
|
||
```
|
||
|
||
## 📍 `retry_times`
|
||
|
||
此属性为网络连接失败时的重试次数。默认为 3,可对其赋值,两种模式均支持。
|
||
|
||
```python
|
||
# 修改重试次数
|
||
page.retry_times = 5
|
||
```
|
||
|
||
## 📍 `retry_interval`
|
||
|
||
此属性为网络连接失败时的重试等待间隔秒数。默认为 2,可对其赋值,两种模式均支持。
|
||
|
||
```python
|
||
# 修改重试等待间隔时间
|
||
page.retry_interval = 1.5
|
||
```
|
||
|
||
## 📍 `page_load_strategy`
|
||
|
||
此属性返回页面加载策略,有 3 种:`'none'`、`'normal'`、`'eager'`,仅用于 d 模式。
|
||
|
||
# ✔️ cookies 和缓存信息
|
||
|
||
## 📍 `cookies`
|
||
|
||
此属性以`dict`方式返回当前页面所使用的 cookies,两种模式均支持。
|
||
|
||
## 📍 `get_cookies()`
|
||
|
||
此方法获取 cookies 并以 cookie 组成的`list`形式返回,两种模式均支持。
|
||
|
||
**参数:**
|
||
|
||
- `as_dict`:是否以字典方式返回,为`False`返回 cookie 组成的`list`
|
||
- `all_domains`:是否返回所有域的 cookies,只有 s 模式下生效
|
||
|
||
**返回:** cookies 信息
|
||
|
||
```python
|
||
from DrissionPage import WebPage
|
||
|
||
p = WebPage('s')
|
||
p.get('http://www.baidu.com')
|
||
p.get('http://gitee.com')
|
||
|
||
for i in p.get_cookies(as_dict=False, all_domains=True):
|
||
print(i)
|
||
```
|
||
|
||
输出:
|
||
|
||
```
|
||
{'domain': '.baidu.com', 'domain_specified': True, ......}
|
||
......
|
||
{'domain': 'gitee.com', 'domain_specified': False, ......}
|
||
......
|
||
```
|
||
|
||
## 📍 `get_session_storage()`
|
||
|
||
此方法用于获取 sessionStorage 信息,可获取全部或单个项,仅用于 d 模式。
|
||
|
||
**参数:**
|
||
|
||
- `item`:要获取的项,不设置则返回全部
|
||
|
||
**返回:** sessionStorage 一个或所有项内容
|
||
|
||
## 📍 `get_local_storage()`
|
||
|
||
此方法用于获取 localStorage 信息,可获取全部或单个项,仅用于 d 模式。
|
||
|
||
**参数:**
|
||
|
||
- `item`:要获取的项,不设置则返回全部
|
||
|
||
**返回:** localStorage 一个或所有项内容
|
||
|
||
# ✔️ 内嵌对象
|
||
|
||
## 📍 `session`
|
||
|
||
此属性返回当前页面对象使用的`Session`对象,仅用于 s 模式。
|
||
|
||
## 📍 `response`
|
||
|
||
此属性为 s 模式请求网站后生成的`Response`对象,本库没实现的功能可直接获取此属性调用 requests 库的原生功能,仅用于 s 模式。
|
||
|
||
```python
|
||
# 打印连接状态
|
||
r = page.response
|
||
print(r.status_code)
|
||
```
|
||
|
||
## 📍 `driver`
|
||
|
||
此属性返回当前页面对象使用的`ChromiumDriver`对象,仅用于 d 模式。
|
||
|
||
# ✔️ 页面截图
|
||
|
||
## 📍 `get_screenshot()`
|
||
|
||
此方法用于对页面进行截图,可对整个网页、可见网页、指定范围截图。对可视范围外截图需要90以上版本浏览器支持,仅用于 d 模式。
|
||
|
||
**参数:**
|
||
|
||
- `path`:保存图片的完整路径,后缀可选`'jpg'`、`'jpeg'`、`'png'`、`'webp'`
|
||
|
||
- `as_bytes`:是否已字节形式返回图片,可选`'jpg'`、`'jpeg'`、`'png'`、`'webp'`、`None`、`True`
|
||
|
||
- `full_page`:是否整页截图,为`True`截取整个网页,为`False`截取可视窗口
|
||
|
||
- `left_top`:截取范围左上角坐标
|
||
|
||
- `right_bottom`:截取范围右下角角坐标
|
||
|
||
**返回:** 图片完整路径或字节文本
|
||
|
||
```python
|
||
# 对整页截图并保存
|
||
page.get_screenshot(path='D:\\page.png', full_page=True)
|
||
```
|