news 2026/6/9 17:44:36

推荐一款新的自动化测试框架:DrissionPage

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
推荐一款新的自动化测试框架:DrissionPage

今天给大家推荐一款基于Python的网页自动化工具:DrissionPage。这款工具既能控制浏览器,也能收发数据包,甚至能把两者合而为一,简单来说:集合了WEB浏览器自动化的便利性和 requests 的高效率优点。

一、DrissionPage框架产生背景

对网页实现自动化,通常会有两类形式:

前者轻量级,速度快,例如requests 库。但requests面对需要登录的网站时,往往还要应付验证码、JS 混淆、签名参数等反爬手段,门槛较高。若数据是由 JS 计算生成的,还须重现计算过程,开发效率不高。

而后者直接使用浏览器,模拟用户行为,如Selenium库,可以很大程度上绕过这些坑,但浏览器运行效率不高。

因此,DrissionPag设计初衷,是将它们合而为一,能够在不同须要时切换相应模式,并提供一种人性化的使用方法,提高开发和运行效率。

为什么叫DrissionPag

Selenium框架用于操作浏览器的对象叫 Driver,requests 用于管理请求连接的对象叫 Session,因此Drission 就是它们两者的合体。在旧版本中,是通过对 selenium 和 requests 的重新封装实现的。

但从 3.0 版开始,作者另起炉灶,用chromium协议自行实现了 selenium 全部功能,从而摆脱了对 selenium 的依赖,功能更多更强,运行效率更高,开发更灵活。

二、DrissionPage框架亮点特色

本库采用全自研的内核,对比 selenium,有以下优点:

三、安装搭建

说了这么多,相信很多人已经跃跃欲试了,怎么快速搭建这套框架,先要准备一些基础环境。

环境准备

项目地址:

https://gitee.com/g1879/DrissionPage

使用 pip 安装 DrissionPage:

pip install DrissionPage

另外在开始之前,我们先进行一些简单设置。如果只使用收发数据包功能,无须任何准备工作。

如果要控制浏览器,须设置浏览器路径。程序默认设置控制 Chrome,所以以下用 Chrome 作为演示。如果要使用 Edge 或其它 Chromium 内核浏览器,设置方法是一样的。

设置浏览器路径:

from DrissionPage.easy_set import set_paths set_paths(browser_path=r'这里修改为您的Chrome浏览器exe文件路径')

这段代码会记录 Chrome 浏览器路径到配置文件。由于路径设置只要运行一次即可,不要写到正式程序里。一般建议新建一个临时 py 文件,并输入以下代码,填入您电脑里的 Chrome 浏览器 exe 文件路径,然后执行。

四、实战一下

1、尝试启动浏览器:

from DrissionPage import ChromiumPage page = ChromiumPage() page.get('https://www.baidu.com')

执行以下代码,如果正常启动了浏览器并且访问了百度,说明可直接使用,跳过后面的步骤即可。

执行代码前,如果已有打开的 Chrome 浏览器,请关闭。

2、与selenium框架代码对比

#案例一:用显性等待方式查找第一个文本包含 some text 的元素。 # 使用 selenium: element = WebDriverWait(driver).until(ec.presence_of_element_located((By.XPATH, '//*[contains(text(), "some text")]'))) # 使用 DrissionPage: element = page('some text') #案例二:跳转到第一个标签页 # 使用 selenium: driver.switch_to.window(driver.window_handles[0]) # 使用 DrissionPage: page.to_tab(0) # 案例三:拖拽一个元素 # 使用 selenium: ActionChains(driver).drag_and_drop(ele1, ele2).perform() # 使用 DrissionPage: ele1.drag_to(ele2)

以上代码实现一模一样的功能,但DrissionPage代码明显更简洁优雅。

3、与requests框架代码对比

# 案例一:获取元素内容 url = 'https://baike.baidu.com/item/python' # 使用 requests: from lxml import etree headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36'} response = requests.get(url, headers = headers) html = etree.HTML(response.text) element = html.xpath('//h1')[0] title = element.text # 使用 DrissionPage: page = WebPage('s') page.get(url) title = page('tag:h1').text

4、DrissionPage不同模式切换

例如:用浏览器登录网站,然后切换到 requests 读取网页。两者会共享登录信息。

from DrissionPage import WebPage from time import sleep # 创建页面对象,默认 d 模式 page = WebPage() # 访问个人中心页面(未登录,重定向到登录页面) page.get('https://gitee.com/profile') # 使用 selenium 输入账号密码登录 page.ele('@id:user_login').input('your_user_name') page.ele('@id:user_password').input('your_password\n') sleep(1) # 切换到 s 模式 page.change_mode() # 登录后 session 模式的输出 print('登录后title:', page.title, '\n')

五、小结

DrissionPage体验一番后,虽然还是存在一些不足的地方,但整得来讲,很多设计理念还是非常值得借鉴的,更多功能就留给大家去探索了,项目文档地址:

http://g1879.gitee.io/drissionpagedocs/

最后作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学全栈,这些资料希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 2:03:37

SpringBoot启动太慢?几个优化技巧

SpringBoot启动太慢?几个优化技巧 项目越做越大,SpringBoot启动时间从几秒变成了30多秒。 改一行代码等半分钟,效率太低了。今天分享几个优化技巧,亲测有效。 先找到慢在哪 优化之前,先看看时间花在哪了。 SpringBoot …

作者头像 李华
网站建设 2026/6/9 17:44:37

Micro 和 Macro 区别

Micro TP/FP/FN 与 一般(Macro)TP/FP/FN 的区别 在机器学习评估中,Micro 和 Macro 代表两种根本不同的评估策略,它们计算TP(真阳性)、FP(假阳性)和FN(假阴性)…

作者头像 李华
网站建设 2026/6/9 13:09:26

【甲基化研究必看】:基于R的DMP和DMR检测完整流程解析

第一章:甲基化差异分析概述DNA甲基化是表观遗传调控的重要机制之一,通过在胞嘧啶的5端添加甲基集团,影响基因的表达活性而不改变DNA序列。甲基化差异分析旨在识别不同生物学条件下(如疾病与正常组织)之间甲基化水平显著…

作者头像 李华
网站建设 2026/6/4 22:52:10

基于单片机AT89C2051的音乐盒设计

一、系统设计背景与总体架构 传统机械音乐盒结构复杂、旋律固定,难以满足个性化需求。基于单片机AT89C2051的音乐盒,通过程序控制实现多首旋律播放,具有体积小、功耗低、可灵活更换曲目等优势,适配礼品、装饰等场景。 系统以AT89C…

作者头像 李华
网站建设 2026/6/8 13:48:38

QUIC协议加持下,HTTP/3为何能彻底改变网络延迟?,深度剖析底层机制

第一章:HTTP/3 的性能HTTP/3 作为新一代超文本传输协议,显著提升了网络通信的效率与可靠性。其核心改进在于底层传输协议从 TCP 切换为基于 UDP 的 QUIC 协议,有效解决了队头阻塞问题,并大幅缩短了连接建立时间。连接建立速度提升…

作者头像 李华
网站建设 2026/6/8 8:46:04

【量子服务集成终极指南】:揭秘企业级系统无缝对接的5大核心策略

第一章:量子服务集成的核心挑战与演进路径随着量子计算从理论研究逐步走向工程实现,将量子能力封装为可调用的服务并融入现有IT架构,已成为科技企业的关键战略方向。然而,量子服务的集成面临诸多技术瓶颈与系统性难题,…

作者头像 李华