DrissionPage/docs/使用方法/创建页面对象.md
2022-01-15 01:00:48 +08:00

5.8 KiB
Raw Blame History

在入门指南的快速上手一节,我们已经初步了解如何创建页面对象,本节进一步介绍更多功能。
页面对象类型为 MixPage通过 MixPage() 创建。
可以通过指定配置信息创建须要的页面对象,如无界面的浏览器、是否加载插件、是否接管已打开的浏览器、设置 headers、设置代理等等。
这些配置信息,可以通过几种方式设置。配置的详细用法后文再讲。本节先了解创建页面对象的几种方式。

MixPage 类

MixPage 页面对象封装了常用的网页操作,并实现在两种模式之间的切换。
MixPage 须控制一个 Drission 对象并使用其中的 WebDriver 或 Session 对象来实现。对浏览器或网络连接的操作。如没有传入MixPage 会自己创建一个(使用传入的配置信息或从默认 ini 文件读取)。

初始化参数:

  • mode初始化时模式'd' 或 's',默认为 'd'
  • drissionDrission 对象,不传入时会自动创建
  • timeout超时时间s 模式时为连接时间d 模式时为查找元素、处理弹出框、输入文本等超时时间
  • driver_options浏览器设置没传入drission 参数时会用这个设置新建 Drission 对象中的 WebDriver 对象,传入 False 则不创建
  • session_optionsrequests 设置,没传入 drission 参数时会用这个设置新建 Drission 对象中的 Session 对象,传入 False 则不创建

直接创建

这种方式代码最简洁,程序会从配置文件中读取配置,自动生成页面对象。可以保持代码简洁。
在基本概念一节我们提到过,本库使用配置文件记录常用配置信息,也可以直接把配置写在代码里。

# 默认以 d 模式创建页面对象
page = MixPage('d')

# 指定以 s 模式创建页面对象
page = MixPage('s')

通过配置信息创建

本库有两种管理配置信息的对象,分别是 DriverOptions 和 SessionOptions对应 d 模式和 s 模式的配置。
须要时,可以创建相应的配置对象进行设置。

DriverOptions 类

DriverOptions 用于管理创建浏览器时的配置,浏览器创建后再修改这个配置是没有效果的。
DriverOptions 对象能实现链式操作。

初始化参数:

  • read_file是否从 ini 文件中读取配置信息
  • ini_pathini 文件路径,为 None 则读取默认 ini 文件
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_pathini 文件路径,为 None 则读取默认 ini 文件
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 模式的配置是可以同时使用的,不会互相影响。

page = MixPage(mode='s', session_options=so, driver_options=do)

传入 Drission 对象创建

在入门指南的基本概念一节里,我们讲过 Drission 对象相当于驱动器的角色。事实上上述两种方式MixPage 都会自动创建一个 Drission 对象用于管理与网站或浏览器的连接,我们当然也可以手动创建并传入 MixPage。
Drission 一般是不用手动创建的要手动创建的时候一般是用于i以下几种情况

  • 指定使用某个配置文件
  • 在不同 MixPage 间传递驱动器
  • 与 selenium 或 requests 原生代码拼接,用于兼容这两者的代码

Drission 类

初始化参数:

  • driver_or_optionsWebDriver 对象、DriverOptions 对象或 Options 对象。传入 False 时自动创建一个空配置对象。
  • session_or_optionsSession 对象、SessionOptions 对象、Options 对象或设置字典。传入 False 时自动创建一个空配置对象。
  • ini_path要使用的 ini 文件的路径
  • proxy初始化时设置代理

使用其它 ini 文件创建

from DrissionPage import MixPage, Drission

d = Drission(ini_path=r'./config1.ini')
page = MixPage(drission=d)

传递驱动器

多页面对象间共用驱动器,如多个 MixPage 控制一个浏览器:

from Drission import MixPage

page1 = MixPage()
d = page1.drission
page2 = MixPage(drission=d)

从 selenium 和 requests 代码传入

DrissionPage 的代码能和 selenium 及 requests 代码兼容,便于不同程序间的对接。
只需把 driver 对象或 session 传入 Drission 对象即可。

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 创建时能直接接收配置信息,所以这个方法基本不需要用到,写出来只是表示有这个功能。

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)