DrissionPage自动化

前言

本文主要介绍了DrissionPage的基本用法,需要详细了解的可以查看DP官网。
DrissionPage官方文档:https://www.drissionpage.cn/browser_control/intro

基本逻辑如下:

  1. 创建浏览器对象,用于启动或接管浏览器(打开浏览器)
  2. 获取一个 Tab 对象
  3. 使用 Tab 对象访问网址
  4. 使用 Tab 对象获取标签页内需要的元素对象
  5. 使用元素对象进行交互

除此以外,还能执行更为复杂的操作,如执行 js 代码、监听网络数据、下载文件等。

使用DrissionPage之前需要安装这个第三方库:

cmd 复制代码
pip install DrissionPage
python 复制代码
from Drission import Chromium

# 1. 创建浏览器对象
browser = Chromium()

# 2. 获取一个最新 Tab(标签页)对象
tab = browser.latest_tab

# 3. 使用tab对象访问网址
tab.get("https://www.baidu.com")

# 4. 使用tab对象获取标签页内需要的元素对象
# 根据CSS选择器获取元素
ele = tab.ele("#kw")

# 5. 使用元素对象进行交互
# 向文本框元素输入对象输入文本
ele.input("python")

# 6. 获取点击按钮元素
btn_ele = tab.ele('#su')
# 7. 元素点击(通过js点击)
btn_ele.click(by_js=True)

# ----------------------------------------
# 也可以使用tab对象直接添加选择器的方式调用元素对象方法,因为会自动调用获取元素ele方法
tab("#kw").input('python')  # 内部自动调用了ele方法

✅️️ 浏览器对象

Chromium对象,用于管理浏览器整体相关的操作。

如标签页管理、获取浏览器信息、设置整体运行参数等。

python 复制代码
from DrissionPage import Chromium

browser = Chromium()  # 创建浏览器对象
browser.set.retry_times(10)  # 设置整体运行参数
tab = browser.latest_tab  # 获取Tab对象
browser.quit()  # 关闭浏览器

✅️️ 标签页对象

Tab 对象从浏览器对象获取,每个 Tab 对象对应浏览器上一个实际的标签页。

大部分操作都使用 Tab 对象进行,如访问网站、调整窗口大小、监听网络等。

默认情况下每个标签页只有一个 Tab 对象,关闭单例模式后可用多个 Tab 对象同时控制一个标签页。

python 复制代码
from DrissionPage import Chromium

browser = Chromium()
tab1 = browser.latest_tab  # 获取最后激活的标签页对象
tab1.get('http://DrissionPage.cn')  # 标签页访问一个网址
tab2 = browser.new_tab('https://www.baidu.com')  # 新建一个标签页并访问网址
tab3 = browser.get_tab(title='DrissionPage')  # 按条件获取标签页对象

自动化中的xpath

python 复制代码
ele = tab.ele('xpath://input[@id="kw"]')

文本定位

文本值需要是唯一的,否则会发生错乱,不能精准定位。

python 复制代码
ele = tab.ele('text:登录')

获取文本和属性值

python 复制代码
ele_a = tab.ele('xpath://*[@id="s-top-left"]/a')

for i in ele_a:
    text = i.text   # 获取文本内容
    attr_value = i.attrs['href']  # 获取属性值
相关推荐
2501_941875281 小时前
从配置中心到动态管理的互联网工程语法演进与多语言实践分享
开发语言·python
hfywmsj1 小时前
广州餐饮铺位招租决策模型:多因子选址系统设计
开发语言·人工智能·python·广州餐饮铺位招租
智塑未来4 小时前
自动化立体库工业无线通信:AGV、AMR、RGV、穿梭车、无人叉车、堆垛机全覆盖
运维·自动化
泡海椒4 小时前
内置SPI函数库详解:JQuick-Java Builtin工具类实战用法
java·开发语言·python
hqyjzsb4 小时前
零 AI 项目经验,学 Python 转型 AI 的正确顺序是什么?
开发语言·人工智能·python·算法·职场和发展·数据挖掘·数据分析
sanjiaomao3335 小时前
从论文公式到Python实现:用单元测试校验滑动平均算法
python·算法·单元测试
志栋智能6 小时前
运维超自动化的变更管理实践
运维·自动化
linweidong7 小时前
中科闻歌Java面试题及参考答案
java·python·大模型·提示词·ai agent·mcp·rag原理
小玮看世界7 小时前
[Python]OD算法在OD实际运用转化参考清单
开发语言·python·算法
萧鼎7 小时前
2026实战:用 tomlkit 优雅读写 TOML 配置,告别手写解析器
python·开源·教程·python库