自动化测试均需要遵循由点到面的规则,然而对于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)