参考 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') ```