在实际的测试中鼠标的操作也是频繁发生的,与封装控制浏览器相关方法是相同的思想,本节笔者将详细介绍如何封装模拟鼠标操作的方法以及如何调用我们封装好的方法。
方法封装
在实际的自动化测试中往往需要模拟一些鼠标的操作来辅助我们来完成页面上一些特殊的操作,例如有些需要鼠标拖拽页面元素,挪动页面元素,鼠标悬停在页面元素上等等, 因此我们封装一些工具类以便于我们在写测试代码中直接调用。
# encoding = utf-8
from selenium.webdriver.common.action_chains import ActionChains
class Simulate_Mouse:
def __init__(self, driver):
self.driver = driver
self.actions = ActionChains(self.driver)
# 单击鼠标左键
def left_click(self, element):
self.actions.click(element).perform()
# 双击鼠标左键
def double_left_click(self, element):
self.actions.double_click(element).perform()
# 单击鼠标右键
def right_click(self, element):
self.actions.context_click(element).perform()
# 移动鼠标到element
def move_mouse(self, element):
self.actions.move_to_element(element).perform()
# 从source移动鼠标到target
def move_mouse_source_target(self, source, target):
self.actions.drag_and_drop(source, target).perform()
# 从source移动鼠标到target
def move_source_target(self, source, target):
self.actions.click_and_hold(source).release(target).perform()
# 拖拽元素到坐标xy
def drag_element(self, element, x, y):
self.actions.click_and_hold(element).move_by_offset(x, y).release().perform()
# 点击并且不释放
def click_hold(self, element):
self.actions.click_and_hold(element)
方法调用
当需要调用其中的方法的时候,将其引入到测试代码中,调用类中的方法时,根据方法所需参数传参即可。
在test_advanced_application文件中新增如下测试方法,验证封装的方法是否可用,代码如下所示。
from Util.Mouse_Simulation import Simulate_Mouse # 引入我们封装好的工具类
import time # 引入time模块用于等待
def test_simulate_mouse(self): # 定义测试方法
chr_driver = webdriver.Chrome() # 启动谷歌浏览器
chr_driver.get(self.url) # 打开url
element = chr_driver.find_element_by_link_text("设置") # 获取页面元素
Simulate_Mouse(chr_driver).move_mouse(element) # 鼠标悬停动作
time.sleep(5) # 强制等待5秒