🚤 动作链
动作链可以在浏览器上完成一系列交互行为,如鼠标移动、鼠标点击、键盘输入等。
动作链支持ChromiumPage
、WebPage
、ChromiumTab
对象。
可以链式操作,也可以分开执行,每个动作执行即生效,无须perform()
。
多个动作可以用链式模式操作:
也可以多个操作分开执行:
这两种方式效果是一样的,每个动作总会依次执行。
✅️ 创建对象
📌 导入
📌 ActionChains
创建动作链对象非常简单,只要把WebPage
对象或ChromiumPage
对象传入即可。动作链只在这个页面上生效。
初始化参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
page |
ChromiumPage WebPage ChromiumTab |
必填 | 动作链要操作的浏览器页面 |
from DrissionPage import ChromiumPage
from DrissionPage.common import ActionChains
page = ChromiumPage()
ac = ActionChains(page)
✅️ 移动鼠标
📌 move_to()
此方法用于移动鼠标到元素中点,或页面上的某个绝对坐标。可设置偏移量,当带偏移量时,偏移量相对于元素左上角坐标。
初始化参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
ele_or_loc |
ChrmoiumElement str Tuple[int, int] |
必填 | 元素对象、文本定位符或绝对坐标,坐标为tuple (int, int) 形式 |
offset_x |
int |
0 | x 轴偏移量,向右为正,向左为负 |
offset_y |
int |
0 | y 轴偏移量,向下为正,向上为负 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
示例: 使鼠标移动到 ele 元素上
📌 move()
此方法用于使鼠标相对当前位置移动若干距离。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
offset_x |
int |
0 | x 轴偏移量,向右为正,向左为负 |
offset_y |
int |
0 | y 轴偏移量,向下为正,向上为负 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
示例: 鼠标向右移动 300 像素
📌 up()
此方法用于使鼠标相对当前位置向上移动若干距离。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
pixel |
int |
必填 | 鼠标移动的像素值 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
示例: 鼠标向上移动 50 像素
📌 down()
此方法用于使鼠标相对当前位置向下移动若干距离。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
pixel |
int |
必填 | 鼠标移动的像素值 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
示例:
📌 left()
此方法用于使鼠标相对当前位置向左移动若干距离。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
pixel |
int |
必填 | 鼠标移动的像素值 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
示例:
📌 right()
此方法用于使鼠标相对当前位置向右移动若干距离。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
pixel |
int |
必填 | 鼠标移动的像素值 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
示例:
✅️ 鼠标按键
📌 click()
此方法用于单击鼠标左键,单击前可先移动到元素上。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
on_ele |
ChromiumElement str |
None |
要点击的元素对象或文本定位符 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
示例:
📌 r_click()
此方法用于单击鼠标右键,单击前可先移动到元素上。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
on_ele |
ChromiumElement str |
None |
要点击的元素对象或文本定位符 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
示例:
📌 m_click()
此方法用于单击鼠标中键,单击前可先移动到元素上。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
on_ele |
ChromiumElement str |
None |
要点击的元素对象或文本定位符 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
示例:
📌 db_click()
此方法用于双击鼠标左键,双击前可先移动到元素上。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
on_ele |
ChromiumElement str |
None |
要点击的元素对象或文本定位符 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
📌 hold()
此方法用于按住鼠标左键不放,按住前可先移动到元素上。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
on_ele |
ChromiumElement str |
None |
要按住的元素对象或文本定位符 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
示例:
📌 release()
此方法用于释放鼠标左键,释放前可先移动到元素上。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
on_ele |
ChromiumElement str |
None |
要释放的元素对象或文本定位符 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
示例: 移动到某元素上然后释放鼠标左键
📌 r_hold()
此方法用于按住鼠标右键不放,按住前可先移动到元素上。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
on_ele |
ChromiumElement str |
None |
要按住的元素对象或文本定位符 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
📌 r_release()
此方法用于释放鼠标右键,释放前可先移动到元素上。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
on_ele |
ChromiumElement str |
None |
要释放的元素对象或文本定位符 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
📌 m_hold()
此方法用于按住鼠标中键不放,按住前可先移动到元素上。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
on_ele |
ChromiumElement str |
None |
要按住的元素对象或文本定位符 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
📌 m_release()
此方法用于释放鼠标中键,释放前可先移动到元素上。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
on_ele |
ChromiumElement str |
None |
要释放的元素对象或文本定位符 |
类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
✅️ 滚动滚轮
📌 scroll()
此方法用于滚动鼠标滚轮,滚动前可先移动到元素上。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
delta_x |
int |
0 | 滚轮 x 轴变化值,向右为正,向左为负 |
delta_y |
str |
0 | 滚轮 y 轴变化值,向下为正,向上为负 |
on_ele |
ChromiumElement str |
None |
要滚动的元素对象或文本定位符 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
✅️ 键盘按键
📌 key_down()
此方法用于按下键盘按键,特殊字符见 Keys。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
key |
str |
必填 | 按键键值 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
示例: 按下 ctrl 键
📌 key_up()
此方法用于提起键盘按键,特殊字符见 Keys。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
key |
str |
必填 | 按键键值 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
示例: 提起 ctrl 键
📌 type()
此方法用于输入一段或多段文本。也可输入组合键。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
text |
str list tuple |
必填 | 要输入的文本或按键,多段文本或组合键可用list 或tuple 传入 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
示例:
✅️ 等待
📌 wait()
此方法用于在动作链中插入停顿。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
second |
float |
必填 | 等待秒数 |
返回类型 | 说明 |
---|---|
ActionChains |
动作链对象本身 |
示例: 停顿 3 秒
✅️ 示例
📌 模拟输入 ctrl+a
from DrissionPage import ChromiumPage
from DrissionPage.common import Keys, ActionChains
# 创建页面
page = ChromiumPage()
# 创建动作链对象
ac = ActionChains(page)
# 鼠标移动到<input>元素上
ac.move_to('tag:input')
# 点击鼠标,使光标落到元素中
ac.click()
# 按下 ctrl 键
ac.key_down(Keys.CTRL)
# 输入 a
ac.type('a')
# 提起 ctrl 键
ac.key_up(Keys.CTRL)
链式写法:
📌 拖拽元素
把一个元素向右拖拽 300 像素:
from DrissionPage import ChromiumPage
from DrissionPage.common import ActionChains
# 创建页面
page = ChromiumPage()
# 创建动作链对象
ac = ActionChains(page)
# 左键按住元素
ac.hold('#div1')
# 向右移动鼠标300像素
ac.right(300)
# 释放左键
ac.release()
把一个元素拖拽到另一个元素上: