写在前面
日常的UI自动化测试活动中,有时候会用到鼠标操作事件。Selenium WebDriver 给我们提供了一个类来处理这类事件:ActionChains。 ActionChains 类提供了鼠标操作的常用方法:
- perform():执行所有 ActionChains 中存储的行为;
- click():左键单击
- context_click():右键双击;
- double_click():双击;
- drag_and_drop():拖动;
- move_to_element():鼠标悬停;
- click_and_hold ():左键按下不释放;
- release ():释放按住的鼠标按钮 。
注意:以上方法需要调用ActionChains()类,将浏览器驱动driver元素elment作为参数传入。例如双击:
ActionChains(driver).double_click(elment)
鼠标事件示例
接下来,针对百度主页模拟鼠标悬停操作。代码如下所示:
代码语言:javascript复制#coding=utf-8
#www.testclass.cn
#Altumn
import time
from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsdriver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get('https://www.baidu.com')
#首先定位到要悬停的元素;
element = driver.find_element_by_link_text("设置")
#对定位到的元素执行鼠标悬停操作;
ActionChains(driver).move_to_element(element).perform()
#等待两秒,为了展示鼠标悬停效果;
time.sleep(2)
#弹出的Ajax,单击'高级搜索';
driver.find_element_by_link_text('高级搜索').click()
小结一下
Selenium WebDriver关于鼠标的处理事件,处理一般为以下几个处理步骤:
- 导入提供鼠标操作的 ActionChains 类:
from selenium.webdriver import ActionChains
- 定位到要进行鼠标操作的元素(元素定位方式不限):
element=driver.find_element_by_link_text(“设置”)
- 调用 ActionChains()类,将浏览器驱动 driver 作为参数传入,并且将要执行的动作传到元素上:
action=ActionChains(driver).move_to_element(element)
- 执行 ActionChains 中存储的行为action,可就是对操作事件的提交动作:
action.perform()