关键字驱动介绍
自动化测试领域下,有两大设计模式,作为测试框架的核心底层。
- 关键字驱动:广泛应用在接口、WEB、APP的测试领域下。
- 本质意义上而言,就是面向对象的编程思维。是一种可以以一套思维逻辑来满足大范围的项目的自动化测试需求。
- 在测试框架体系下,关键字驱动是非常常用的一种设计模式。
关键字驱动的结构与优势
关键字驱动结构
1.结构形态的清晰化,结构分离:代码与数据分离,逻辑代码与测试代码分离。
2.封装一定要复用性高。
3.足够灵活的封装
关键字驱动的优势
1.可以随时添加或修改关键字驱动类,便于后期的各类维护。
2.代码变得更加简洁
3.维护更加容易,冗余降低,提升了代码的拓展性。
关键字驱动类设计原理
- 通过以操作行为为关键字的形态进行封装,可以有效地将各类业务的自动化测试实现。如果要解决单个框架应对多个系统的自动化测试业务,则优先考虑关键字驱动。
- 结构上的逻辑代码与测试代码的完全分离。
- 关键字驱动类一定是结合数据驱动类来实现完整的测试形态。
- 关键字驱动形态,最为核心的应用在于接口自动化测试,UI 层,一般而言是结合企业需求来定义的。
- 基于企业的实际需求来设计一个对应的测试框架。而不是单纯的代码库的堆积。所有的测试框架都不是以固定的内容去套用不同的公司体系,一定是结合公司体系来设计完整的测试框 架。
- 在封装关键字驱动类中的函数时,一定要考虑到每一个函数是否会有不同的业务场景,如果有,则需要合理设计代码的逻辑。确保每一个函数都能够有高复用性与灵活性
'''
关键字驱动类。
一般在常态化中,考虑封装各类操作行为,作为关键字驱动的核心底层结构。
以工具类的形态,便于其他的类来进行调用。
常用的操作行为:
1. 访问url
2. 创建driver对象
3. 元素定位
4. 三类等待
5. 输入、点击
6. 切换iframe和句柄
。。。。。
封装的概念上,我们优先考虑自己用的上的内容,进行封装。
Selenium本身类似于一家超级无敌大的商场。关键字驱动类类似于家用的工具箱,要往工具箱里添加我们需要的东西。
在调用工具箱实现自己的自动化时,如果发现工具少了,或者缺失了,可以及时到Selenium中进行补充。
'''
import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from options_web import chrome_options
# 构造浏览器对象,基于type_参数,构造对应的浏览器对象。
def open_browser(type_):
'''
getattr是python内置的四大函数之一,反射机制,用于获取指定对象的属性或者函数。
driver = getattr(webdriver, type_)()意思就是:
if type_ == 'Chrome':
driver = webdriver.Chrome()
elif type_ == 'Edge':
driver = webdriver.Edge()
elif.....
因为反射本身是用来获取指定对象属性的。如果要获取的是函数,则需要在反射的后面加()
例如:
getattr(webdriver, type_) 表示获