打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
网页自动化工具 DrissionPage

我以为我把 selenium 和 requests 已经玩明白了,直到遇到了这个项目。-- DrissionPage 。

当然,能想到将 selenium 和 requests 整合到一起的不单单只有 DrissionPage, 比如:Selenium-Requests 等。

DrissionPage 提供很多亮点:

兼顾浏览器自动化的便利性和 requests 的高效率。

自研内核,从3.0开始,无需 chromedriver。

可以跨

查找元素,无需切入切出。

可同时操作多个tab 标签页,无需切换。

无处不在的等待和自动重试功能。

更快的运行速度。

在线文档:http://g1879.gitee.io/drissionpagedocs/

使用&配置

通过 pip 安装:

> pip install DrissionPage

设置浏览器路径>>> from DrissionPage.easy_set import set_paths

>>> set_paths(browser_path=r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe')

打开Python shell,输入上面两行代码,或者 粘贴 两行代码到 .py 文件执行。

这一步确实不太方便,我已经提交了 PR ,通过命令行工具设置浏览器路径。

关闭浏览器

多个 Chrome 会造成冲突,如果当前已有打开的 Chrome 浏览器,请全部关闭。

编写脚本

操作浏览器(Web UI)

编写gitee 登录自动化脚本:

from DrissionPage import ChromiumPage

# 创建页面对象,并启动或接管浏览器

page = ChroiumPage()

# 跳转到登录页面

page.get('https://gitee.com/login')

# 定位到账号文本框,获取文本框元素

ele = page.ele('#user_login')

# 输入对文本框输入账号

ele.input('您的账号')

# 定位到密码文本框并输入密码

page.ele('#user_password').input('您的密码')

# 点击登录按钮

page.ele('@value=登 录').click()

收发数据包(http接口)

继续编写脚本,获取豆瓣最新热映电影。from DrissionPage import SessionPage

# 创建页面对象

page = SessionPage()

# 访问某一页的网页

page.get(f'https://movie.douban.com/cinema/nowplaying/shenzhen/')

# 获取所有开源库元素列表

links = page.eles('.ticket-btn')

# 遍历所有元素

for link in links:

print(link.text)

运行结果

不能流泪的悲...

选座购票

流浪地球2

选座购票

满江红

选座购票

黑豹2

选座购票

深海

选座购票

可不可以不要...

选座购票

无名

选座购票

...

混合模式

通过实现百度搜索例子,演示两种模式切换。from DrissionPage import WebPage

# d: 操作浏览器模式

page = WebPage('d')

page.get('http://www.baidu.com')

page.ele('#kw').input('DrissionPage')

page.ele('@value=百度一下').click(wait_loading=True)

# 切换到s模式: 收发包模式

page.change_mode()

results = page.eles('tag:h3')

for result in results:

print(result.text)

运行结果

python采集库DrissionPage- 腾讯云开发者社区-腾讯云

DrissionPage- Web应用开发 - 青少年人工智能资源与创新...

DrissionPagev1.9.0 已经发布,WEB 自动化测试集成工具_程...

DrissionPage首页、文档和下载 - WEB 自动化测试集成工具 ...

GitHub - zz0828/DrissionPage: A module that integrates...

DrissionPage- Gitee

DrissionPage· PyPI

DrissionPage- 以POM模式整合selenium和requests的web自...

DrissionPagev2.4.1 已经发布,WEB 自动化测试集成工具-低...

DrissionPagev2.2.1 发布,WEB 自动化测试集成工具 | 码农网

更多例子和 API 请阅读官方文档,在此就不再演示。

总结

DrissonPage 真正强大的地方在于两点:

自研内核,接管已启动的浏览器,这一点可以极大的提升自动化测试的运行和调试,想想你编写自动化脚本的时候,每次都启动个浏览器从头开始跑脚本,直到定位错误的地方,这简直是的浪费生命。

高度融合Web操作 和 接口请求,甚至他的API中,已经模糊了这两者的界限。并且,还提供很多简单好用的方法。

应用场景:

网络爬虫:非常适合,不容置疑。

用 requests 做数据采集面对要登录的网站时,要分析数据包、JS 源码,构造复杂的请求,往往还要应付验证码、JS 混淆、签名参数等反爬手段,门槛较高。若数据是由 JS 计算生成的,还须重现计算过程,体验不好,开发效率不高。使用浏览器,可以很大程度上绕过这些坑,但浏览器运行效率不高。因此,这个库设计初衷,是将它们合而为一,能够在需要时切换相应模式,并提供一种人性化的使用方法,提高开发和运行效率。

从作者设计库的初衷也能看出,更好地完成网页自动化。

自动化测试:优、缺点明显。

优点前面都说了,说说不足。

自研内核,目前只支持 chromium 系的浏览器(edge/chrome),随着浏览的版本的升级,可能存在不兼容问题。firefox/safari浏览器就不支持了。当然,作者非常积极的在维护项目。

并不提供 自动化测试相关的配套,例如 用例断言、测试报告、数据库操作、生成随机数等,它和 selenium/playwright同类型的工具,因此至少需要配合单元测试框架使用,pytest是不错的选择。

最后,我也会继续关注项目,从中借鉴好的功能和设计。记得去gitee给他加星,哈哈~!

相关项目

DrissionPage:https://gitee.com/g1879/DrissionPage

Selenium-Requests:https://github.com/cryzed/Selenium-Requests

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
推荐一款新的自动化测试框架:DrissionPage!
Selenium官网教程
Selenium2+python自动化62
Selenium2+python自动化69-PhantomJS使用
python爬虫技术的选择
浅谈Python网络爬虫
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服