失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > UI自动化测试框架搭建 —— yaml文件管理定位元素

UI自动化测试框架搭建 —— yaml文件管理定位元素

时间:2023-07-06 01:26:30

相关推荐

UI自动化测试框架搭建 —— yaml文件管理定位元素

介绍

本框架基于Python语言进行开发,使用pytest管理用例运行,使用Jenkins+Allue进行脚本执行与报告展示。

适用于Web、H5、IOS、安卓的UI自动化测试

元素封装

对于一个需要定位的元素,我们一般就需要用到它的描述定位方式定位语句使用时的变量名

由于部分元素出现时间较长,增加一个等待时间

我们编写一个Locator类,来描述一个定位元素

classLocator:"""页面元素封装"""def__init__(self,element,wait_sec=3,by_type='id',locator_name='',desc=''):"""@paramelement:定位语句@paramwait_sec:等待时间默认3秒@paramby_type:定位方式@paramlocator_name:变量名@paramdesc:描述"""self.element=elementself.wait_sec=wait_secself.by_type=by_typeself.locator_name=locator_nameself.desc=descdef__str__(self):returnf'{self.desc}:(By:{self.by_type},element:{self.element})'def__repr__(self):returnf'{self.desc}'

重写__str__方法是为了使用print打印的时候可以显示指定内容

比如有个如下的元素,使用print打印它的实例化对象就可以展示

挂号:(By:xpath,element://p[text()="挂号"])

registered=Locator(element='//p[text()="挂号"]',wait_sec=3,by_type="xpath",locator_name="registered",desc="挂号")print(registered)#挂号:(By:xpath,element://p[text()="挂号"])

后面在调试或者日志打印的时候可以展示的更易于阅读

Yaml文件格式规定

为了方便多端(h5、ios、安卓等)元素调用的统一,yaml格式规定如下:

pages:-page:pageName:home_h5desc:首页locators:-{desc:"挂号",type:"xpath",value:'//p[text()="挂号"]',name:"registered"}-page:pageName:home_iosdesc:首页_ioslocators:-{desc:"挂号",type:"xpath",value:'//XCUIElementTypeStaticText[@name="挂号"]',name:"registered"}

最外层是pages表示多个页面

下层是page+desc+locators表示单个页面的名称、描述、具体的元素定位

我们只要在执行脚本前正确读取该yaml文件,并将它的locators中的元素一一使用Locator实例化,就可以使用了

读取yaml文件

path:yaml文件的存放路径

withopen(path,'r+',encoding='utf-8')asf:data_dict=yaml.load(f,Loader=yaml.FullLoader)or{}

将读取出来的数据使用Locator实例化

其中desc组合一下页面的描述,变为页面描述+元素描述

desc = f"{page_desc}_{locator['desc']}"

pages_list=data_dict["pages"]locator_map=dict()forpageinpages_list:page_name=page["page"]["pageName"]page_desc=page["page"]["desc"]locator_map[page_name]=dict()locators_list=page["page"]["locators"]forlocatorinlocators_list:by_type=locator["type"]element=locator["value"]wait_sec=int(locator.get("timeout",3))locator_name=locator["name"]desc=f"{page_desc}_{locator['desc']}"tmp=Locator(element,wait_sec,by_type,locator_name,desc)locator_map[page_name][locator_name]=tmp

使用定位元素

传入一个locator_name也就是使用时的变量名我们就可以拿到这个元素的所有信息了

locator_name="registered"page_name="home_h5"locator=locator_map.get(page_name)iflocator:locator=locator.get(locator_name)

end

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

最后基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源【免费】。

如果觉得《UI自动化测试框架搭建 —— yaml文件管理定位元素》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。