selenium.webdriver.common.action_chains
ActionChains 实现
1. class selenium.webdriver.common.action_chains.ActionChains(driver)
ActionChains 是一种自动执行低级别交互的方法,例如鼠标移动,鼠标按钮操作,按键和上下文菜单交互。这对于执行更复杂的操作非常有用,例如悬停和拖放。
1.1. 生成用户操作。
在 ActionChains 对象上调用操作方法时,操作将存储在 ActionChains 对象的队列中。
当调用 perform()
时,事件将按它们排队的顺序触发。
ActionChains 可用于链式模式:
menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")
ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()
或者可以逐个排队,然后执行:
menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")
actions = ActionChains(driver)
actions.move_to_element(menu)
actions.click(hidden_submenu)
actions.perform()
无论哪种方式,动作都按照它们被调用的顺序一个接一个地执行。
1.2. ActionChains(driver)
创建一个新的 ActionChains。
-
参数:
- driver: 执行用户操作的 WebDriver 实例。
1.3. click(on_element=None)
单击元素。
-
参数:
- on_element: 要单击的元素。如果为 None,则单击当前鼠标位置。
1.4. click_and_hold(on_element=None)
在元素上按住鼠标左键。
-
参数:
- on_element: 鼠标按下的元素。如果为 None,则单击当前鼠标位置。
1.5. context_click(on_element=None)
在元素上执行上下文单击(右键单击)。
-
参数:
- on_element: 上下文单击的元素。如果为 None,则单击当前鼠标位置。
1.6. double_click(on_element=None)
双击元素。
-
参数:
- on_element: 双击的元素。如果为 None,则单击当前鼠标位置。
1.7. drag_and_drop(source, target)
在源元素上按住鼠标左键,然后移动到目标元素并释放鼠标按键。
-
参数:
-
source: 在这个元素上按下鼠标左键
-
target: 移动到这个元素释放鼠标按键
-
1.8. drag_and_drop_by_offset(source, xoffset, yoffset)
在源元素上按住鼠标左键,然后移动一个偏移量并释放鼠标按键。
-
参数:
-
source: 在这个元素上按下鼠标左键
-
xoffset: X 轴偏移量
-
yoffset: Y 轴偏移量
-
1.9. key_down(value, element=None)
仅发送按键,而不释放它。
只能与修饰键(Control,Alt 和 Shift)一起使用。
-
参数:
-
value: 要发送的修饰键,修饰键常量在 Keys 类中定义
-
element: 要发送按键的元素,如果为 None,则发送到当前焦点元素
-
举例,按 ctrl+c:
ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
1.10. key_up(value, element=None)
释放按键
-
参数:
-
value: 要发送的修饰键,修饰键常量在 Keys 类中定义
-
element: 要发送按键的元素,如果为 None,则发送到当前焦点元素
-
举例,按 ctrl+c:
ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
1.11. move_by_offset(xoffset, yoffset)
将鼠标移动到当前鼠标位置的偏移量。
-
参数:
-
xoffset: X 轴偏移量,一个正整数或负整数
-
yoffset: Y 轴偏移量,一个正整数或负整数
-
1.12. move_to_element(to_element)
将鼠标移动到元素的中间。
-
参数:
- to_element: 要移动到的 WebElement。
1.13. move_to_element_with_offset(to_element, xoffset, yoffset)
将鼠标移动指定元素的偏移量。
偏移量相对于元素的左上角。
-
参数:
-
to_element: 要移动到的 WebElement。
-
xoffset: X 轴偏移量
-
yoffset: X 轴偏移量
-
1.14. pause(seconds)
以秒为单位暂停指定持续时间内的所有输入
1.15. perform()
执行所有存储的操作。
1.16. release(on_element=None)
释放元素上的鼠标按钮。
-
参数:
- on_element: 鼠标移动的元素。如果为 None,则释放当前鼠标位置。
1.17. reset_actions()
清除已存储在远程端的操作。
1.18. send_keys(*keys_to_send)
将按键发送到当前焦点元素。
-
参数:
- keys_to_send: 要发送的按键,修饰键常量在 Keys 类中定义
1.19. send_keys_to_element(element, *keys_to_send)
将按键发送到元素
-
参数:
-
element: 要发送按键的元素
-
keys_to_send: 要发送的按键,修饰键常量在 Keys 类中定义
-