📜  selenium 中的动作类 (1)

📅  最后修改于: 2023-12-03 15:20:04.206000             🧑  作者: Mango

Selenium中的动作类

Selenium是一个自动化测试工具,用于模拟用户浏览器行为。其中,动作类(Action Class)封装了一些鼠标和键盘操作,可以用于实现一些特殊的交互,如双击、拖拽等。

使用前准备

在使用动作类之前,需要先创建一个Actions对象,并将其绑定到某个浏览器实例上:

from selenium.webdriver import Chrome
from selenium.webdriver.common.action_chains import ActionChains

browser = Chrome()
actions = ActionChains(browser)
常用的动作
点击

click方法用于模拟点击一个元素:

element = browser.find_element_by_xpath("...")
actions.click(element).perform()
双击

double_click方法用于模拟双击一个元素:

element = browser.find_element_by_xpath("...")
actions.double_click(element).perform()
悬停

move_to_element方法用于模拟鼠标悬停在一个元素上:

element = browser.find_element_by_xpath("...")
actions.move_to_element(element).perform()

可以通过move_by_offset方法实现鼠标相对移动。例如,将鼠标移动到当前位置的右下方:

actions.move_by_offset(10, 10).perform()
拖拽

drag_and_drop方法用于模拟拖拽一个元素到另一个元素:

source_element = browser.find_element_by_xpath("...")
target_element = browser.find_element_by_xpath("...")
actions.drag_and_drop(source_element, target_element).perform()

可以通过click_and_hold方法模拟点击并保持鼠标位置,再移动鼠标实现精细的拖拽:

source_element = browser.find_element_by_xpath("...")
target_element = browser.find_element_by_xpath("...")
actions.click_and_hold(source_element).move_to_element(target_element).release().perform()
键盘操作

send_keys方法用于模拟键盘输入。例如,向文本框输入"hello"

element = browser.find_element_by_xpath("...")
actions.send_keys(element, "hello").perform()

可以通过key_downkey_up方法模拟按下和释放键盘键:

actions.key_down(Keys.CONTROL).send_keys("a").key_up(Keys.CONTROL).perform()

可以通过send_keys方法实现组合键,例如按下Ctrl+Shift+B:

actions.key_down(Keys.CONTROL).key_down(Keys.SHIFT).send_keys("b").key_up(Keys.SHIFT).key_up(Keys.CONTROL).perform()
总结

动作类是Selenium中非常实用的一部分,可以用于模拟一些特殊的交互。在使用时,需要注意选择合适的方法和元素,避免出现意外情况。