RF自动化测试之元素封装

Wesley13
• 阅读 219

自动化测试均需要遵循由点到面的规则,然而对于UI自动化,点是最容易发生变化的,如果使用硬链接,那么每次元素的修改都必须修改代码,这对于代码功底薄弱的测试工程师来说,是较为困难的,所以自动化测试需要对底层基本元素进行封装

1、首先就是元素的获取方式

我推荐使用CSV的文件格式对元素进行存储和维护,并给每个元素起个别名,这样之后元素维护只需要修改CSV表中具体的元素的,可简化维护工作,CSV文件内的格式如下:

模块名称,自定义的元素名称,元素定位信息,描述
Login&Register,login_label_text,btn_Login,"""我的""页面登录/注册按钮"
Login&Register,login_phone_input,et_phone_2412,登录手机号输入框

读取csv文件的方法如下

import csv    
def read_csv(self,data_path):
        with open(data_path, "r", encoding='utf-8') as csvfile:
            reader = csv.DictReader(csvfile)
            sheet_data = {}
            for line in reader:
                sheet_data[line["自定义的元素名称"]] = line["元素定位信息"]
            # print(sheet_data.__len__())
            return sheet_data

2、完整代码如下

import csv

class GetIdentify(object):

    def return_identify(self, os_name, ele_name,ele_path):
        print('进入程序,ele_name:')
        print(ele_name)
        # ele_path="D:\\Study\\xxx\\xxxxx\\"
        android_dic = GetIdentify().read_csv(ele_path+'Android_Element.csv')   #必须填入绝对路径
        ios_dic = GetIdentify().read_csv(ele_path+'IOS_Element.csv')   #必须填入绝对路径
        if os_name.lower() == 'android':
            re_id = android_dic.get(ele_name)
            print(re_id)
            return re_id
        elif os_name.lower() == 'ios':
            re_id = ios_dic.get(ele_name)
            print(re_id)
            return re_id

    def read_csv(self,data_path):
        with open(data_path, "r", encoding='utf-8') as csvfile:
            reader = csv.DictReader(csvfile)
            sheet_data = {}
            for line in reader:
                sheet_data[line["自定义的元素名称"]] = line["元素定位信息"]
            # print(sheet_data.__len__())
            return sheet_data

if __name__ == '__main__':
    os_name="android"    #调试用代码
    ele_name='POI_travelpage_findcar'
    ss1=GetIdentify()
    ss1.return_identify(os_name,ele_name)
点赞
收藏
评论区
推荐文章
Jacquelyn38 Jacquelyn38
1年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
1年前
一篇文章带你了解JavaScript htmldom 元素
这篇文章将教会大家如何查找和访问网页中的HTML元素。一、找到HTML元素通常,使用JavaScript,想操作HTML元素。要做到这一点,必须先找到元素。有几种方法可以做到这一点。找到DOM中的HTML元素的最简单的方法,是利用元素的id。使用id"intro"找到元素:varmyElementdocument.getElementById("in
Java Record 的一些思考 - 默认方法使用以及基于预编译生成相关字节码的底层实现
快速上手Record类我们先举一个简单例子,声明一个用户Record。publicrecordUser(longid,Stringname,intage)这样编写代码之后,Record类默认包含的元素和方法实现包括:1.record头指定的组成元素(intid,Stringname,intage),并且,这些元素都是f
Wesley13 Wesley13
1年前
JQ选择器
如果你想寻找id以“sub\_”开头的元素,你可以使用:$("id^'sub_'")如果你想寻找id以“trim”结尾的元素,你可以使用:$("id$'trim'")要获得id包含“AAA”的元素,需要使用(这比遍历要快)$("id'trim'")可以指定元素类型input或者其他标签
Stella981 Stella981
1年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
1年前
Python自动化测试PO模式
页面元素定位信息页面元素定位信息文件leadscloud_logininput_user_namexpath//@id'main'/div/div2/div2/div2/div/form/div1/div/div/inputinput_user_passwordx
Stella981 Stella981
1年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Wesley13 Wesley13
1年前
MySQL查询按照指定规则排序
1.按照指定(单个)字段排序selectfromtable_nameorderiddesc;2.按照指定(多个)字段排序selectfromtable_nameorderiddesc,statusdesc;3.按照指定字段和规则排序selec
京东云开发者 京东云开发者
1个月前
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究