275 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

参考 selenium 的`ActionChains`,本库也提供了自己的`ActionChains`。语法更简洁易用,每个动作执行即生效,无须`perform()`
# ✔ 创建对象
## 📍 `ActionChains`
创建动作链对象非常简单,只要把`WebPage`对象或`ChromiumPage`对象传入即可。动作链只在这个页面上生效。
**参数:**
- `page``WebPage`对象或`ChromiumPage`对象
```python
# 创建前先导入
from DrissionPage import WebPage, ActionChains
page = WebPage()
ac = ActionChains(page)
```
# ✔ 移动鼠标
## 📍 `move_to()`
此方法用于移动鼠标到元素中点,或页面上的某个绝对坐标。可设置偏移量,当带偏移量时,偏移量相对于元素左上角坐标。
**参数:**
- `ele_or_loc`:元素对象、文本定位符或绝对坐标,坐标为`tuple`(int, int) 形式
- `offset_x`:偏移量 x
- `offset_y`:偏移量 y
**返回:**`ActionChains`对象自己
```python
ele = page('tag:a')
ac.move_to(ele_or_loc=ele) # 使鼠标移动过到 ele 元素上
```
## 📍 `move()`
此方法用于使鼠标相对当前位置移动若干距离。
**参数:**
- `offset_x`:偏移量 x
- `offset_y`:偏移量 y
**返回:**`ActionChains`对象自己
```python
ac.move(300, 0) # 鼠标向右移动 300 像素
```
## 📍 `up()`
此方法用于使鼠标相对当前位置向上移动若干距离。
**参数:**
- `pixel`:移动距离
**返回:**`ActionChains`对象自己
```python
ac.up(50) # 鼠标向上移动 50 像素
```
## 📍 `down()`
此方法用于使鼠标相对当前位置向下移动若干距离。
**参数:**
- `pixel`:移动距离
**返回:**`ActionChains`对象自己
## 📍 `left()`
此方法用于使鼠标相对当前位置向左移动若干距离。
**参数:**
- `pixel`:移动距离
**返回:**`ActionChains`对象自己
## 📍 `right()`
此方法用于使鼠标相对当前位置向右移动若干距离。
**参数:**
- `pixel`:移动距离
**返回:**`ActionChains`对象自己
# ✔ 鼠标按键
## 📍 `click()`
此方法用于单击鼠标左键,单击前可先移动到元素上。
**参数:**
- `on_ele``ChromiumElement`元素或文本定位符
**返回:**`ActionChains`对象自己
## 📍 `r_click()`
此方法用于单击鼠标右键,单击前可先移动到元素上。
**参数:**
- `on_ele``ChromiumElement`元素或文本定位符
**返回:**`ActionChains`对象自己
## 📍 `m_click()`
此方法用于单击鼠标中键,单击前可先移动到元素上。
**参数:**
- `on_ele``ChromiumElement`元素或文本定位符
**返回:**`ActionChains`对象自己
## 📍 `hold()`
此方法用于按住鼠标左键不放,按住前可先移动到元素上。
**参数:**
- `on_ele``ChromiumElement`元素或文本定位符
**返回:**`ActionChains`对象自己
## 📍 `release()`
此方法用于释放鼠标左键,释放前可先移动到元素上。
**参数:**
- `on_ele``ChromiumElement`元素或文本定位符
**返回:**`ActionChains`对象自己
## 📍 `r_hold()`
此方法用于按住鼠标右键不放,按住前可先移动到元素上。
**参数:**
- `on_ele``ChromiumElement`元素或文本定位符
**返回:**`ActionChains`对象自己
## 📍 `r_release()`
此方法用于释放鼠标右键,释放前可先移动到元素上。
**参数:**
- `on_ele``ChromiumElement`元素或文本定位符
**返回:**`ActionChains`对象自己
## 📍 `m_hold()`
此方法用于按住鼠标中键不放,按住前可先移动到元素上。
**参数:**
- `on_ele``ChromiumElement`元素或文本定位符
**返回:**`ActionChains`对象自己
## 📍 `m_release()`
此方法用于释放鼠标中键,释放前可先移动到元素上。
**参数:**
- `on_ele``ChromiumElement`元素或文本定位符
**返回:**`ActionChains`对象自己
# ✔ 滚动滚轮
## 📍 `scroll()`
此方法用于滚动鼠标滚轮,滚动前可先移动到元素上。
**参数:**
- `delta_x`:滚轮变化值 x
- `delta_y`:滚轮变化值 y
- `on_ele``ChromiumElement`元素或文本定位符
**返回:**`ActionChains`对象自己
# ✔ 键盘按键
## 📍 `key_down()`
此方法用于按下键盘按键。
**参数:**
- `key`:按键键值,特殊字符见 Keys
**返回:**`ActionChains`对象自己
```python
from DrissionPage.keys import Keys
ac.key_down(Keys.CTRL) # 按下 ctrl 键
```
## 📍 `key_up()`
此方法用于提起键盘按键。
**参数:**
- `key`:按键键值,特殊字符见 Keys
**返回:**`ActionChains`对象自己
## 📍 `type()`
此方法用于输入一段文本。
**参数:**
- `text`:文本字符串
**返回:**`ActionChains`对象自己
# ✔ 等待
## 📍 `wait()`
此方法用于在动作链中插入停顿。
**参数:**
- `second`:秒数
**返回:**`ActionChains`对象自己
```python
ac.wait(3) # 停顿 3 秒
```
# ✔ 链式操作
以上操作皆能实现链式操作。且最后无需`perform()`
```python
from DrissionPage import ChromiumPage, ActionChains
page = ChromiumPage()
ac = ActionCHains(page)
# 链式操作
ac.move_to('tag:h1').right(30).click().key_down('a').key_up('a')
```