selenium+pytest:Web自动化Yaml工具类封装二
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
一、页面元素yaml文件封装
1.元素yaml文件字段说明
- function_name: forntRedisValueClick --调用得方法名
element:
- el_types: CSS_SELECTOR -- 元素类型
operation_type: click --元素操作类型
element: div[class^=redis-input-config-cls] --元素
index: --通过下标操作元素
count: 0 --定位元素个数
attribute: --通过属性名获取文本
label: --通过标签名获取文本
info: redis前置条件,点击redisValue值输入框
2.元素yaml工具类
import logging.config
import os, sys,yaml
from congfig.pub.FrontColour import FrontColour as FC
from congfig.pub.FilePath import LOG_PATH_CON, TEST_DATA, PAGE_ELEMENT_PATH
from tools.StaticFunction import StaticFunction as SF
logging.config.fileConfig(LOG_PATH_CON,disable_existing_loggers=False)
# 操作元素yaml工具类
class OperationElementYaml():
#限制该类只允许传入列表内参数
# __slots__ = ['__yamlName', '__funcName', 'yamlElPath']
#通过yaml文件名称拼接yaml路径获取需要操作的yaml数据
def __init__(self,yamlName,funcName):
self.__yamlName = yamlName
self.__funcName = funcName
self.yamlElPath = os.path.join(PAGE_ELEMENT_PATH,yamlName)
#打开yaml文件
@property
def openYaml(self):
if os.path.exists(self.yamlElPath):
with open(self.yamlElPath,'r',encoding='utf-8') as yamlFile:
yamlData = yaml.load(yamlFile,Loader=yaml.FullLoader)
return yamlData
else:
logging.error(FC.RED%"yaml路径不存在:{0},请检查后执行".format(self.yamlElPath))
sys.exit()
#判断func_name是否存在于yaml中,若存在则将该节点数据返回
@property
def checkFunName(self):
yamlDict = self.openYaml
for dict_i in yamlDict:
if dict_i.get("function_name") == self.__funcName:
return dict_i
else:
logging.error(FC.RED%"方法名在当前yaml文件中未找到,方法名:{0},yaml文件名:{1}".format(self.__funcName,self.__yamlName))
sys.exit()
#判断节点数据类型是否为dict,根据下标获取element数据
@property
def getElData(self):
yamlDict = self.checkFunName
if isinstance(yamlDict,dict):
element_list = yamlDict["element"]
yaml_data = element_list[0]
return yaml_data
else:
logging.error(FC.RED%"yaml数据错误,数据:{0}".format(yamlDict))
#获取操作类型
@property
def getOperationType(self):
return self.getElData.get("operation_type")
#获取types
@property
def getElType(self):
return self.getElData.get("el_types")
#获取count
@property
def getCount(self):
count = self.getElData.get("count")
if count == None:
return 0
else:
return count
#获取element
@property
def getElement(self):
return self.getElData.get("element")
#获取info信息
@property
def getINFO(self):
return self.getElData.get("info")
#获取attribute信息
@property
def getAttribute(self):
return self.getElData.get('attribute')
#获取label信息
@property
def getLabel(self):
return self.getElData.get('label')
#获取Index信息
@property
def getIndex(self):
index = self.getElData.get('Index')
if index ==None:
return 0
else:
return index
二、测试数据yaml文件封装
1.测试数据yaml文件字段说明
- function_name: project_search_input
testdata:
- test_001: '11,1111,2,3,4' --用例编号多个元素英文逗号分隔
info: 输入列表存在的数据 --用例描述
- test_002: '1111'
info: 输入列表不存在的数据
- test_003: '!@#$%^&'
info: 输入特殊字符
2.测试数据yaml工具类,继承元素操作的yaml工具
class OperationTestDataYaml(OperationElementYaml):
'''
操作测试数据yaml工具类
'''
#通过yaml文件名称拼接yaml路径获取需要操作的yaml数据
def __init__(self, yamlName,funcName):
super().__init__(yamlName,funcName)
self.yamlElPath = os.path.join(TEST_DATA, yamlName)
#判断节点数据类型是否为dict,根据下标获取testdata数据
@property
def getTdData(self):
yamlDict = self.checkFunName
if isinstance(yamlDict,dict):
data = yamlDict["testdata"]
return data
else:
logging.error("执行{0}方式,错误信息:yaml数据错误,数据:{1}".format("getTdData",yamlDict))
#获取测试用例数据,从test_data截取
def getTestData(self,index):
SF.checkCount(index)
strTestData = self.getTdData[index].get("test_00" str(index 1))
#验证传入数据为空时,直接return 空字符串进行处理
if strTestData == None:
return ''
else:
return tuple(strTestData.split(','))
总结
1.类方法还在持续优化中,代码中存在一些冗余逻辑问题,有待优化
2.每天学习一点,能更卷一点
3.框架整体还在持续优化中,其它工具类方法后续会慢慢更新
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggbeff
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01