DrissionPage模块(一)

DrissionPage模块

DrissionPage是一个强大的自动化测试框架,它提供了丰富的特性和功能,包括但不限于强大的内核、亮点功能、安装与升级、导包与简单示例、查找元素等。12

特性:

强大的内核:DrissionPage拥有一个强大的内核,支持多种浏览器和操作系统的自动化测试。

亮点功能:包括但不限于页面中查找元素、链式查找、相对查找、shadow root等。

安装与升级:DrissionPage提供了详细的安装和升级指南,确保用户能够轻松地安装和更新这个框架。

导包与简单示例:DrissionPage的导包和简单示例部分,提供了如何导入和使用DrissionPage的示例代码,帮助用户快速上手。

查找元素:

概述:DrissionPage提供了多种查找元素的方法,包括在页面中查找、在元素中查找、链式查找、相对查找等。

基本用法:包括查找元素的方法(ele()eles()),匹配模式(精确匹配、模糊匹配等),查找语法(id匹配符、class匹配符等),以及相对定位(获取父级元素、获取直接子节点等)。

更多用法:包括静态方式查找元素等,提供了丰富的功能和灵活性,满足不同场景下的需求。

通过上述内容,可以看出DrissionPage是一个功能强大且易于使用的自动化测试框架,它不仅提供了丰富的特性和功能,还提供了详细的教程和示例,帮助用户快速掌握并使用这个框架进行自动化测试和网页爬取等任务

  1. DrissionPage目录

DrissionPage目录结构

DrissionPage目录下有四个文件:__init__.py,common.py, errors.py, items.py, setup.py。

1.1 __init__.py

__init__.py文件中导入定义了三个浏览器类,分别为:

  1. ChromiumPage类:创建d模式驱动的类,来源于_pages目录下的chromium_page.py
  2. SessionPage类:创建s模式驱动的类,来源于_pages目录下的session_page.py
  3. WebPage类:创建同时具备d和s模式驱动的类,来源于_pages目录下的web_page.py

对这三类的解析,其实也就是对_pages目录下chromium_page.py,session_page.py,web_page.py和chromiumbase.py的解析。

__init__.py文件中也导入定义了二个启动配置类,分别如下:

  1. ChromiumOptions类:来源于_configs目录下的chromium_options.py
  2. SessionOption类:来源于_configs目录下的session_options.py

属性、类、函数

说明

ChromiumPage

from ._pages.chromium_page import ChromiumPage

ChromiumOptions

from ._configs.chromium_options import ChromiumOptions

SessionPage

from ._pages.session_page import SessionPage

SessionOptions

from ._configs.session_options import SessionOptions

WebPage

from ._pages.web_page import WebPage

__version__

‘4.0.4.22’

DrissionPage库的版本号

WebPage类由_pages目录下的web_page.py中导入,其是ChromiumPage类、SessionPage类和BasePage的子类。

ChromiumPage类,由selenium的__init__.py文件导入,但源于_pages目录下的chromium_page.py,其继承于ChromiumBase类,是ChromiumBase类的子类,其用于管理浏览器的类,使用requests模块来获取和解析url页面。

SessionPage类,由selenium的__init__.py文件导入,但源于_pages目录下的session_page.py,其继承于BasePage类,是BasePage类的子类,其封装了页面操作的常用功能,使用requests模块来获取和解析url页面。

1.2 common.py

Command.py主要考虑从其它具有类似功能的库的转换。

common.py文件定义了二个函数,如下:

函数(方法)

功能

from_selenium(driver)

从selenium的WebDriver对象生成ChromiumPage对象

from_playwright(page_or_browser)

从playwright的Page或Browser对象生成ChromiumPage对象

​​​​​​​1.3 error.py

errors.py定义了18个错误类:

序号

类名

功能

1

BaseError(Exception)

实例化时,可传入ErrorInfo,默认为ErrorInfo=None。

2

ElementNotFoundError(BaseError)

实例化时,参数可为ErrorInfo=None, method=None, arguments=None,默认为:没有找到元素。

3

AlertExistsError(BaseError)

存在未处理的提示框。

4

ContextLostError(BaseError)

页面被刷新,请操作前尝试等待页面刷新或加载完成。

5

ElementLostError(BaseError)

元素对象已失效。可能是页面整体刷新,或js局部刷新把元素替换或去除了。

6

CDPError(BaseError)

方法调用错误。

7

PageDisconnectedError(BaseError)

与页面的连接已断开。

8

JavaScriptError(BaseError)

JavaScript运行错误。

9

NoRectError(BaseError)

该元素没有位置及大小。

10

BrowserConnectError(BaseError)

浏览器连接失败。

11

NoResourceError(BaseError)

该元素无可保存的内容或保存失败。

12

CanNotClickError(BaseError)

该元素无法滚动到视口或被遮挡,无法点击。

13

GetDocumentError(BaseError)

获取文档失败。

14

WaitTimeoutError(BaseError)

等待失败。

15

WrongURLError(BaseError)

无效的url。

16

StorageError(BaseError)

无法操作当前存储数据。

17

CookieFormatError(BaseError)

cookie格式不正确。

18

TargetNotFoundError(BaseError)

找不到指定页面。

​​​​​​​1.4 item.py

items.py定义了元素类

主要有:ChromiumElement, ShadowRoot, NoneElement, SessionElement, ChromiumFrame, ChromiumTab,WebPageTab。其主要是从其他文件中导入定义,如:

from ._elements.chromium_element import ChromiumElement, ShadowRoot

from ._elements.none_element import NoneElement

from ._elements.session_element import SessionElement

from ._pages.chromium_frame import ChromiumFrame

from ._pages.chromium_tab import ChromiumTab, WebPageTab

序号

类名

功能

来源

1

ChromiumElement

d模式的元素对象

._elements.chromium_element

2

ShadowRoot

._elements.chromium_element

3

NoneElement

._elements.none_element

4

SessionElement

s模式的元素对象

._elements.session_element

5

ChromiumFrame

._pages.chromium_frame

6

ChromiumTab

浏览器的url页面,即标签对象

._pages.chromium_tab

7

WebPageTab

浏览器的url页面,即标签对象

._pages.chromium_tab

具体的信息在下文再详细介绍。

​​​​​​​1.5 setup.py

Setup.py文件暂时还未写,故就不解析了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python编程爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值