【Appium_python】利用Template生成对象模板_appium_元素定位/操作
2024-10-21 05:49:02
UI自动化中用PageObject设计模式就会发现page元素定位代码基本重复,复制黏贴,修改,所以就想到运用模板方式,批量生成page,同理也能批量生成handle。
有模板,利用配置文件ini获取类名,方法名,模板套用,生成文件。
1、编写模板文件:
文件名:template_handle_head.tmpl,template_page_body.tmpl
2、利用配置文件:
LocalElement.ini
3、用configparser 读取配置文件,替换class_name、fun_name以及option,批量生成多个page文件:
from string import Template
import configparser # 用ini里的文件获取元素生成的类--->后面再升级直接读取excel生成page跟handle下的页面
class GeneratePage:
def __init__(self):
# 元素文件
self.config_file = '..\\config\\LocalElement.ini'
# 类模板文件,模板文件最下面要空2行
self.template_path_head = '../config/template_page_head.tmpl'
self.template_path_body = '../config/template_page_body.tmpl'
# 生成文件后的地址
self.package_path = '../page/' # 自动生成类文件_page_package下的元素定位
def generate_class_file(self, class_name, list_func_name):
my_code = []
template_file_head = open(self.template_path_head, 'r')
template_file_body = open(self.template_path_body, 'r')
tmpl_head = Template(template_file_head.read())
tmpl_body = Template(template_file_body.read())
my_code.append(tmpl_head.substitute(class_name=class_name))
for func_name in list_func_name:
my_code.append(tmpl_body.substitute(func_name=func_name, option="\'" + func_name + "\'"))
return my_code # 生成文件
def write_to_file(self, file_name, code):
file_path = self.package_path + file_name + '_page.py'
class_file = open(file_path, 'w')
class_file.writelines(code)
class_file.close() # 用configparser 读取配置文件,替换class_name、fun_name以及option
def loop_generate_class_file(self):
config = configparser.ConfigParser()
config.read(self.config_file, encoding='utf-8')
list_section = config.sections()
for section in list_section:
# 文件名
file_name = section[0:section.rfind('_')]
# 类名
list_file = file_name.split('_')
class_name = "".join([name.capitalize() for name in list_file])
# 方法名集合里就是func_name以及option_name
list_func_name = config.options(section)
code = self.generate_class_file(class_name, list_func_name)
self.write_to_file(file_name, code)
print('ok') if __name__ == '__main__':
generate_code = GeneratePage()
generate_code.loop_generate_class_file()
4.查看效果图:
5、其他:handel格式也是类似,可以同样自动生成,配置文件也可以用excel等。
最新文章
- 【python】传入函数
- C# Redis
- mySql 的基本操作
- Windows下Qt开发环境:OpenGL导入3DMax模型(.3DS)
- USACO4.12Beef McNuggets(背包+数论)
- PHP安全编程:shell命令注入(转)
- achartengine 实现平行线 动态数据 x轴动态移动
- SQL SERVER IN参数化处理
- 清理收缩VMware虚拟机MacOS系统的vmdk文件大小
- java error:编码gbk的不可映射字符
- Flask 构建微电影视频网站(六)
- [BZOJ1925][SDOI2010]地精部落(DP)
- appium 环境搭建2
- bloc控制读写文件
- loadrunner转码两种方式
- python学习之-用scrapy框架来创建爬虫(spider)
- Spring boot国际化
- python基础之 基本数据类型,str方法和for循环
- isPlainObject的解释
- 浮点型转整数型进行计算 - 移动GIS设备硬件的原因