关键字驱动
关键字驱动设计模式介绍
测试框架的核心设计理念,是决定一个框架能否满足企业实际需求的关键点。而市场最主流的框架设计模式分为关键字驱动和POM(页面对象模型),主要是为了针对不同的业务场景和企业需求来实现不同的测试框架。
关键字驱动,是测试框架设计模式中最为传统的设计模式。就是通过核心的关键字调用,来实现对应的功能需要。
通过自定义的内容,通过以关键字调用的形态进行内容的执行,从而降低代码的冗余。也可以更好地维护我们的自动化测试代码。
关键字驱动的设计模式主要用于以一对多的测试场景。
关键字驱动设计模式原理
测试框架基本原理:
- 代码与数据分离
- 逻辑代码与测试代码分离
关键字驱动设计模式代码实现
py
from selenium import webdriver
from time import sleep
'''
关键字驱动类
'''
# def open_browser(type_):
# if type_ == 'Chrome':
# driver = webdriver.Chrome()
# else:
# try:
# driver = getattr(webdriver, type_)()
# except:
# driver = webdriver.Chrome()
# return driver
# 基于用户需要创建对应浏览器对象
def open_browser(type_):
browser = {
'Chrome': ['chrome', 'Chrome', 'google', 'gc']
}
for key, value in browser.items():
if type_ in value:
driver = getattr(webdriver, key)()
break
return driver
class WebKey:
def __init__(self, type_=None):
self.driver = open_browser(type_)
self.driver.implicity_wait(5)
# 打开浏览器
def open(self, url):
self.driver.get(url)
# 元素定位
def locator(self, by, value):
return self.driver.find_element(by, value)
# 点击
def click(self, by, value):
self.locator(by, value).click()
# 输入
def input(self, by, value, txt):
self.locator(by, value).send_keys(txt)
# 切换句柄
def switch_handle_new(self,close=None,num=1):
handles = self.driver.window_handles
if close is not None:
self.driver.close()
self.driver.switch_to.window(handles[num])
# 文本断言:用in包含文本的方式断言
def assert_text_in(self, by, value, expected):
try:
# 实际结果文本
reality = self.locator(by, value).text
message = f'''
断言失败:
expected:{expected}
reality:{reality}
{expected} != {reality}
'''
assert expected in reality, message
return True
except Exception as e:
return False
# 退出浏览器
def quit(self):
self.driver.quit()
# 强制等待
def wait(self, time_):
sleep(int(time_))