在日常自动化测试过程中,经常用到鼠标操作!鼠标操作包括基本的点击,右键点击,双击,悬停等。基于Selenium自动化测试的鼠标操作都包含哪些呢?
ActionChains鼠标操作
在Selenium中,所有鼠标操作都封装在了ActionChains(动作链)类中。以下是ActionChains关于鼠标的操作:
其中,perform执行所有ActionChains的存储的行为;content_click是右键点击;movie to element是悬停,double click为双击;窗口拖动用drag_and_drop。这些操作需要新导入包,包名:
# ActionChains封装类的包路径
selenium.webdriver.common.action_chains.ActionChains
ActionChains用法
为了获得更多的鼠标操作,怎么使用ActionChains呢?首先,使用之前,先来看看如何创建ActionChains的实例,构造函数:
# 通过WebDriver实例创建一个ActionChains实例
actionChains = ActionChains(driver)
其次,还需要明白ActionChains的封装思想,它就像一个容器,链表,将一系列鼠标操作存储于这个容器中,当调用perform的时候,按照ActionChains中操作的排序,依次执行动作。
例如,向ActionChains中添加滑动、悬停、点击操作,这个时候ActionChains实例中将存储这3个操作,直到调用perform方法,这些动作才会被执行。
以百度搜索为例,代码演示ActionChains的用法:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
driver = webdriver.Firefox()
# 打开百度
driver.get("https://www.baidu.com")
sleep(1)
# 右键单击“新闻”元素
right_click = driver.find_element_by_xpath("//a[@href='https://nes.baidu.com']")
ActionChains(driver).context_click(right_click).perform()
# 悬停到新闻链接的操作
on_stop = driver.find_element_by_xpath("//a[@href='https://nes.baidu.com']")
ActionChains(driver).move_to_element(on_stop).perform()
# 在搜索框上进行双击操作
double_click = driver.find_element_by_xpath("//input[@id='kw']")
ActionChains(driver).double_click(double_click).perform()
运行以上代码,可以看到已经可以随意控制鼠标了!
最后
ActionChains基本上已经封装了日常的操作,满足了我们自动化测试的需求。如何学到ActionChains的用法,理解其封装思想是一个十分重要的环节。ActionChains的这种封装思想,不仅能够满足简单测试用例的需求,同时,当需要复杂的鼠标操作的时候,灵活组装ActionChains就能够达到目标了!