🛰️ 概述
✅️️ 基本逻辑
操作浏览器的基本逻辑如下:
- 创建浏览器对象,用于启动或接管浏览器
- 获取一个 Tab 对象
- 使用 Tab 对象访问网址
- 使用 Tab 对象获取标签页内需要的元素对象
- 使用元素对象进行交互
除此以外,还能执行更为复杂的操作,如执行 js 代码、监听网络数据、下载文件等。这些在后面的章节再介绍。
示例: 在百度搜索 “Drissionpage”,并打印结果。
# 导入
from DrissionPage import Chromium
# 连接浏览器
browser = Chromium()
# 获取标签页对象
tab = browser.latest_tab
# 访问网页
tab.get('https://www.baidu.com')
# 获取文本框元素对象
ele = tab.ele('#kw')
# 向文本框元素对象输入文本
ele.input('DrissionPage')
# 点击按钮,上两行的代码可以缩写成这样
tab('#su').click()
# 获取 所有<h3>元素
links = tab.eles('tag:h3')
# 遍历并打印结果
for link in links:
print(link.text)
✅️️ 浏览器对象
即Chromium
对象,用于管理浏览器整体相关的操作。
如标签页管理、获取浏览器信息、设置整体运行参数等。
from DrissionPage import Chromium
browser = Chromium() # 创建浏览器对象
browser.set.retry_times(10) # 设置整体运行参数
tab = browser.latest_tab # 获取Tab对象
browser.quit() # 关闭浏览器
✅️️ 标签页对象
Tab 对象从浏览器对象获取,每个 Tab 对象对应浏览器上一个实际的标签页。
大部分操作都使用 Tab 对象进行,如访问网站、调整窗口大小、监听网络等。
默认情况下每个标签页只有一个 Tab 对象,关闭单例模式后可用多个 Tab 对象同时控制一个标签页。
from DrissionPage import Chromium
browser = Chromium()
tab1 = browser.latest_tab # 获取最后激活的标签页对象
tab1.get('https://DrissionPage.cn') # 标签页访问一个网址
tab2 = browser.new_tab('https://www.baidu.com') # 新建一个标签页并访问网址
tab3 = browser.get_tab(title='DrissionPage') # 按条件获取标签页对象
✅️️ 元素对象
元素对象ChromiumElemet
是交互的执行者,如点击、文本输入、获取元素信息等。
元素对象可从 Tab 对象获取,也可从另一个元素对象通过内部查找或相对定位的方式获取。
📌 对象内部查找
Tab 对象和 元素对象都有ele()
方法,用于在其内部查找指定元素。
from DrissionPage import Chromium
tab = Chromium().latest_tab
tab.get('https://DrissionPage.cn')
ele = tab.ele('使用文档') # 获取文本包含“使 用文档”的元素
ele.click() # 点击该元素
📌 相对位置查找
可先获取一个元素对象,然后以这个元素为基准定位其内部或指定相对关系的元素。
from DrissionPage import Chromium
tab = Chromium().latest_tab
tab.get('https://DrissionPage.cn')
ele1 = tab.ele('使用文档') # 获取文本包含“使用文档”的元素
ele2 = ele1.next() # 获取ele1的后一个元素
ele2.click() # 点击该元素