首页 / DrissionPage 入门教程 / 元素交互基础

DrissionPage 入门教程

元素交互基础

本教程共 42 篇 · 第 22 篇 · 更新于 2026-07-29 · 约 5 分钟阅读

DrissionPageDrissionPage 入门教程元素交互clickinput表单操作

22. 元素交互基础

本节目标:掌握元素的基本交互操作,包括点击、输入、清空和提交,学完能对页面元素执行常见的交互动作。

点击元素 click()

click() 是最常用的元素交互方法。

from DrissionPage import Chromium

tab = Chromium().latest_tab
tab.get('https://www.baidu.com')

# 找到按钮并点击
tab.ele('text:登录').click()

三种点击模式

click() 支持三种点击方式,通过 by_js 参数控制。

# 默认:优先模拟点击,被遮挡时改用 js 点击
ele.click()

# 强制模拟点击,即使被遮挡也点
ele.click(by_js=False)

# 用 js 点击,无视遮罩层
ele.click(by_js=True)

默认情况下 by_js=None,程序会先尝试模拟点击。如果元素被遮挡、不可见或无法滚动到视口,会自动切换到 js 点击。

模拟点击更接近真实用户操作,能触发更多事件。js 点击更暴力,但可能漏掉一些事件处理。优先用模拟点击。

点击前自动滚动

模拟点击前,程序会尝试把元素滚动到视口中。不需要手动滚动页面。

输入内容 input()

input() 用于向输入框输入文本。

# 找到输入框并输入
ele = tab.ele('#kw')
ele.input('DrissionPage')

输入前清空

默认不会清空已有内容。设置 clear=True 可以在输入前自动清空。

# 先清空再输入
ele.input('新内容', clear=True)

输入并回车

在文本末尾加 \n 可以输入后回车。

# 输入关键词并回车搜索
ele.input('DrissionPage\n')

用 js 输入

设置 by_js=True 可以用 js 方式输入,速度更快但不能输入组合键。

ele.input('Hello', by_js=True)

输入组合键

input() 还能输入组合键。先导入 Keys 类:

from DrissionPage.common import Keys

# 输入 ctrl+a 全选
ele.input(Keys.CTRL_A)

# 输入 ctrl+c 复制
ele.input(Keys.CTRL_C)

# 自定义组合键
ele.input((Keys.CTRL, 'a', Keys.DEL))  # ctrl+a+del

Keys 内置了常用组合键:CTRL_ACTRL_CCTRL_XCTRL_VCTRL_ZCTRL_Y

清空文本 clear()

clear() 用于清空输入框内容。

# 模拟按键方式清空(ctrl+a+del)
ele.clear()

# js 方式清空(直接设置 value 为空)
ele.clear(by_js=True)

模拟方式更接近真实操作,js 方式更直接。

获取焦点 focus()

focus() 让元素获取焦点。

ele.focus()

有些页面需要先获取焦点才能输入,这时就用到 focus()

拖拽 drag() 和 drag_to()

相对拖拽

drag() 将元素拖拽到相对当前位置的偏移处。

# 向右下方拖拽 50*50 像素,用时 1 秒
ele.drag(50, 50, 1)

拖拽到目标

drag_to() 将元素拖拽到另一个元素或坐标上。

# 拖拽到另一个元素上
ele1.drag_to(ele2)

# 拖拽到页面坐标 (100, 200)
ele1.drag_to((100, 200))

悬停 hover()

hover() 模拟鼠标悬停在元素上。

# 悬停在元素中点
ele.hover()

# 悬停在元素内指定偏移位置
ele.hover(50, -30)

很多网页的二级菜单需要悬停才显示,这时就用到 hover()

实际例子:登录流程

一个完整的登录操作:

from DrissionPage import Chromium

tab = Chromium().latest_tab
tab.get('https://example.com/login')

# 输入用户名
tab.ele('#username').input('myuser', clear=True)

# 输入密码
tab.ele('#password').input('mypass', clear=True)

# 点击登录按钮
tab.ele('text:登录').click()

实际例子:搜索操作

百度搜索的典型流程:

from DrissionPage import Chromium

tab = Chromium().latest_tab
tab.get('https://www.baidu.com')

# 在搜索框输入关键词并回车
tab.ele('#kw').input('DrissionPage\n')

# 或者分步来
# tab.ele('#kw').input('DrissionPage')
# tab.ele('text:百度一下').click()

小结

方法作用常用参数
click()点击by_js
input()输入文本clear, by_js
clear()清空文本by_js
focus()获取焦点
drag()相对拖拽offset_x, offset_y, duration
drag_to()拖拽到目标ele_or_loc, duration
hover()悬停offset_x, offset_y

这些是最基础的元素交互方法。掌握了它们,就能完成大部分网页自动化任务。