selenium---ActionChains

1. ActionChains简介

ActionChains是一种自动化底层交互的方法,比如鼠标移动,鼠标按键动作,按键和上下文菜单交互。这对于做更复杂的动作很有用,比如悬停和拖放。

2. 执行原理

当调用 ActionChains 对象上的操作方法时,不会立即执行,而是将操作存储在 ActionChains 对象的队列中。当调用 perform ()时,事件按照它们排队的顺序激发。

3. 使用方法

  1. 链式用法
    ActionChains(driver).move_to_element(element).click(element).perform()

  2. 分布式用法

actions = ActionChains(driver)
actions.move_to_element(element)
actions.click(element)
actions.perfrom()

4. 具体方法

1. click( on_element=None ) 单击一个元素。

参数:

on_element:要点击的元素。如果没有,则单击当前鼠标位置。

 

2. click_and_hold( on_element=None ) 在元素上按住鼠标左键。

参数:

on_element:鼠标按下的元素。如果没有,则单击当前鼠标位置。

3. context_click( on_element=None ) 在元素上执行上下文单击(右键单击)。

参数:

on_element:要上下文单击的元素。如果没有,则单击当前鼠标位置。

 

4. double_click( on_element=None ) 双击一个元素。

参数:

on_element:要双击的元素。如果没有,则单击当前鼠标位置。

 

5. drag_and_drop(源,目标) 在源元素上按住鼠标左键,然后移动到目标元素并释放鼠标按钮。

参数:

来源:鼠标按下的元素。

目标:鼠标向上的元素。

 

6. drag_and_drop_by_offset(源, xoffset , yoffset ) 在源元素上按住鼠标左键,然后移动到目标偏移并释放鼠标按钮。

参数:

source:鼠标按下的元素。

xoffset:要移动到的 X 偏移量。

yoffset:要移动到的 Y 偏移量。

 

7. key_down( value , element=None ) 仅发送按键,不释放。只能与修饰键(Control、Alt 和 Shift)一起使用。

参数:

值:要发送的修饰键。值在Keys类中定义。

element:发送密钥的元素。如果没有,则向当前聚焦的元素发送一个键。

例如,按 ctrl+c:

ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()

 

8. key_up( value , element=None ) 释放修饰键。

参数:

值:要发送的修饰键。值在 Keys 类中定义。

element:发送密钥的元素。如果没有,则向当前聚焦的元素发送一个键。

例如,按 ctrl+c:

ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()

 

9. move_by_offset( xoffset , yoffset ) 将鼠标移动到与当前鼠标位置的偏移处。

参数:

xoffset:要移动到的 X 偏移量,作为正整数或负整数。

yoffset:要移动到的 Y 偏移量,作为正整数或负整数。

 

10. move_to_element( to_element ) 将鼠标移动到元素的中间。

参数:

to_element:要移动到的 WebElement。

 

11. move_to_element_with_offset( to_element , xoffset , yoffset ) 将鼠标移动指定元素的偏移量。偏移量相对于元素的左上角。

参数:

to_element:要移动到的 WebElement。

xoffset:要移动到的 X 偏移量。

yoffset:要移动到的 Y 偏移量。

 

12. pause(秒) 在指定的持续时间内暂停所有输入(以秒为单位)

 

13. perform()执行所有存储的操作。

 

14. release( on_element=None ) 在元素上释放按住的鼠标按钮。

参数:

on_element:鼠标悬停的元素。如果没有,则在当前鼠标位置释放。

 

15. reset_actions()清除已存储在本地和远程端的操作

 

posted @ 2021-12-02 21:12  ElsaWang  阅读(587)  评论(0)    收藏  举报