mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
162 lines
6.0 KiB
Markdown
162 lines
6.0 KiB
Markdown
在入门指南的快速上手一节,我们已经初步了解如何创建页面对象,本节进一步介绍更多功能。
|
||
页面对象类型为`MixPage`,通过`MixPage()`创建。
|
||
可以通过指定配置信息创建须要的页面对象,如无界面的浏览器、是否加载插件、是否接管已打开的浏览器、设置`headers`、设置代理等等。
|
||
这些配置信息,可以通过几种方式设置。配置的详细用法后文再讲。本节先了解创建页面对象的几种方式。
|
||
|
||
# `MixPage`类
|
||
|
||
`MixPage`页面对象封装了常用的网页操作,并实现在两种模式之间的切换。
|
||
`MixPage`须控制一个`Drission`对象并使用其中的`WebDriver`或`Session`对象来实现。对浏览器或网络连接的操作。如没有传入,`MixPage`会自己创建一个(使用传入的配置信息或从默认 ini 文件读取)。
|
||
|
||
初始化参数:
|
||
|
||
- mode:初始化时模式,`'d'`或`'s'`,默认为`'d'`
|
||
- drission:Drission 对象,不传入时会自动创建
|
||
- timeout:超时时间,s 模式时为连接时间,d 模式时为查找元素、处理弹出框、输入文本等超时时间
|
||
- driver_options:浏览器设置,没传入`drission`参数时会用这个设置新建`Drission`对象中的`WebDriver`对象,传入`False`则不创建
|
||
- session_options:requests 设置,没传入`drission`参数时会用这个设置新建`Drission`对象中的`Session`对象,传入`False`则不创建
|
||
|
||
!> **注意:** <br>
|
||
有传入`drission`参数时,`driver_options`和`session_options`参数无效
|
||
|
||
# 直接创建
|
||
|
||
这种方式代码最简洁,程序会从配置文件中读取配置,自动生成页面对象。可以保持代码简洁。
|
||
在基本概念一节我们提到过,本库使用配置文件记录常用配置信息,也可以直接把配置写在代码里。
|
||
|
||
```python
|
||
# 默认以 d 模式创建页面对象
|
||
page = MixPage('d')
|
||
|
||
# 指定以 s 模式创建页面对象
|
||
page = MixPage('s')
|
||
```
|
||
|
||
# 通过配置信息创建
|
||
|
||
本库有两种管理配置信息的对象,分别是`DriverOptions`和`SessionOptions`,对应 d 模式和 s 模式的配置。
|
||
须要时,可以创建相应的配置对象进行设置。
|
||
|
||
## `DriverOptions`类
|
||
|
||
`DriverOptions`用于管理创建浏览器时的配置,浏览器创建后再修改这个配置是没有效果的。
|
||
`DriverOptions`对象能实现链式操作。
|
||
|
||
初始化参数:
|
||
|
||
- read_file:是否从 ini 文件中读取配置信息
|
||
- ini_path:ini 文件路径,为`None`则读取默认 ini 文件
|
||
|
||
```python
|
||
from Drission import MixPage
|
||
# 导入 DriverOptions
|
||
from DrissionPage.config import DriverOptions
|
||
|
||
# 创建浏览器配置对象,从文件读取配置,并增加设置浏览器静音和不加载图片
|
||
do = DriverOptions().set_mute().set_no_imgs()
|
||
# 用该配置创建页面对象
|
||
page = MixPage(driver_options=do)
|
||
```
|
||
|
||
## `SessionOptions`类
|
||
|
||
`SessionOptions`用于管理创建浏览器时的配置,浏览器创建后再修改这个配置是没有效果的。
|
||
`SessionOptions`对象能实现链式操作。
|
||
|
||
初始化参数:
|
||
|
||
- read_file:是否从 ini 文件中读取配置信息
|
||
- ini_path:ini 文件路径,为`None`则读取默认 ini 文件
|
||
|
||
```python
|
||
from Drission import MixPage
|
||
# 导入 SessionOptions
|
||
from DrissionPage.config import SessionOptions
|
||
|
||
proxies = {'http': 'http://127.0.0.1:1080',
|
||
'https': 'https://127.0.0.1:1080'}
|
||
|
||
# 创建浏览器配置对象,不从 ini 文件读取,并设置代理信息
|
||
so = SessionOptions(read_file=False).set_proxies(proxies)
|
||
# 用该配置创建页面对象(s 模式)
|
||
page = MixPage(mode='s', session_options=so)
|
||
```
|
||
|
||
d 模式的配置和 s 模式的配置是可以同时使用的,不会互相影响。
|
||
|
||
```python
|
||
page = MixPage(mode='s', session_options=so, driver_options=do)
|
||
```
|
||
|
||
# 传入`Drission`对象创建
|
||
|
||
在入门指南的基本概念一节里,我们讲过`Drission`对象相当于驱动器的角色。事实上,上述两种方式,`MixPage`都会自动创建一个`Drission`对象用于管理与网站或浏览器的连接,我们当然也可以手动创建并传入`MixPage`。
|
||
`Drission`一般是不用手动创建的,要手动创建的时候,一般是用于i以下几种情况:
|
||
|
||
- 指定使用某个配置文件
|
||
- 在不同`MixPage`间传递驱动器
|
||
- 与 selenium 或 requests 原生代码拼接,用于兼容这两者的代码
|
||
|
||
## `Drission`类
|
||
|
||
初始化参数:
|
||
|
||
- driver_or_options:`WebDriver`对象、`DriverOptions`对象或`Options`对象。传入`False`时自动创建一个空配置对象。
|
||
- session_or_options:`Session`对象、`SessionOptions`对象、`Options`对象或设置字典。传入`False`时自动创建一个空配置对象。
|
||
- ini_path:要使用的 ini 文件的路径
|
||
- proxy:初始化时设置代理
|
||
|
||
## 使用其它 ini 文件创建
|
||
|
||
```python
|
||
from DrissionPage import MixPage, Drission
|
||
|
||
d = Drission(ini_path=r'./config1.ini')
|
||
page = MixPage(drission=d)
|
||
```
|
||
|
||
## 传递驱动器
|
||
|
||
多页面对象间共用驱动器,如多个`MixPage`控制一个浏览器:
|
||
|
||
```python
|
||
from Drission import MixPage
|
||
|
||
page1 = MixPage()
|
||
d = page1.drission
|
||
page2 = MixPage(drission=d)
|
||
```
|
||
|
||
## 从 selenium 和 requests 代码传入
|
||
|
||
DrissionPage 的代码能和 selenium 及 requests 代码兼容,便于不同程序间的对接。
|
||
只需把`WebDriver`对象或`Session`传入`Drission`对象即可。
|
||
|
||
```python
|
||
from selenium import webdriver
|
||
from requests import Session
|
||
from DrissionPage import Drission, MixPage
|
||
|
||
driver = webdriver.Chrome()
|
||
session = Session()
|
||
|
||
d = Drission(driver_or_options=driver, session_or_options=session)
|
||
page = MixPage(drission=d)
|
||
page.get('https://www.baidu.com')
|
||
```
|
||
|
||
## 用配置信息创建
|
||
|
||
因为`MixPage`创建时能直接接收配置信息,所以这个方法基本不需要用到,写出来只是表示有这个功能。
|
||
|
||
```python
|
||
from DrissionPage.config import DriverOptions, SessionOptions
|
||
from DrissionPage import Drission, MixPage
|
||
|
||
do = DriverOptions()
|
||
so = SessionOptions()
|
||
d = Drission(driver_or_options=do, session_or_options=so)
|
||
page = MixPage(drission=d)
|
||
```
|
||
|