我的第一份UI自动化测试框架
一、框架介绍:
1、本框架使用Python开发语言,结合selenium,unnitest单元测试框架,再采用PO模型进行封装,整个框架结构一共包含了十大模块,如下图所示:
1、base层:基础层,存放我们的基础定位元素的方法,一共八种常用的方法;
2、business层:业务层,存放我们业务功能处理;
3、case层:存放我们测试用例;
4、congfig层:存放元素的定位信息;
5、handle层:存放页面的操作信息;
6、img层:存放图片信息;
7、log层:存放日志信息;
8、page层:存放页面信息;
9、report层:存放测试报告信息;
10、until层:存放工具类信息;
二、框架搭建
1、本框架配置文件采用的是ini文件存储,所以第一步是在until层,创建读取ini文件:
# 定义全局属性
def __init__(self, file_name=None, node=None):
# 定义默认文件读取
if file_name is None:
file_name = r'C:\Users\Mrlin\PycharmProjects\Cost_management_system\config\YuanGon.ini'
# 定义默认ini文件头读取
if node is None:
self.node = 'RegisterElement'
else:
self.node = node
self.cf = self.getIni(file_name)
# 读取ini文件
def getIni(self, file_name):
cf = configparser.ConfigParser()
cf.read(file_name, encoding='UTF-8')
return cf
# 获取ini文件的数据值
def getMessage(self, node, key):
data = self.cf.get(node, key)
return data
2、写好读取ini配置文件之后,开始进行第二步,在base层定义我们selenium操作页面元素的方法:
def __init__(self, driver):
self.driver = driver
def get_element(self, file_path, note, key):
# 读取ini文件相关元素配置信息
read_ini = Read_ini(file_path)
data = read_ini.getMessage(note, key)
# 规定配置文件定位信息写法,>左边为定位方法、右边为定位信息
by = data.split('>')[0]
value = data.split('>')[1]
# 八大定位方式
try:
if by == 'id':
return self.driver.find_element_by_id(value)
elif by == 'name':
return self.driver.find_element_by_name(value)
elif by == 'className':
return self.driver.find_element_by_class_name(value)
elif by == 'xpath':
return self.driver.find_element_by_xpath(value)
elif by == 'link_text':
return self.driver.find_element_link_text(value)
elif by == 'partial_link_text':
return self.driver.find_element_partial_link_text(value)
elif by == 'css_selector':
return self.driver.find_element_css_selector(value)
else:
return self.driver.find_element_tag_name(value)
except:
return None
3、两份文件编写完成后,就可以在开始第三步,再config层编写我们的定位元素配置信息了:
;登录页面相关定位信息
;[]内内容为node,=号左边为key,右边内容根据‘>’拆分
[LoginElement]
;选择账号登录
salecard_select = xpath>//span[text()='账号登录']
;用户名
salecard_login