跳到主要内容

🛰️ 概述


✅️️ 基本逻辑

操作浏览器的基本逻辑如下:

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

除此以外,还能执行更为复杂的操作,如执行 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() # 点击该元素