def getLocateMethodAndData(self,element): excel=ReadExcel.ReadExcel() element_excel_path="F:\\pytest\\xebest-autotest\\Data\\send_goods.xls" element_sheet=excel.getTableBySheetName(element_excel_path,"objname_locatemethod_locatedata") #得到元素所在行号 row_index=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(element_excel_path,"objname_locatemethod_locatedata",element)[0] #得到定位方式所在列号 locate_method_key=u"定位方式简述" locate_method_col_index=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(element_excel_path,"objname_locatemethod_locatedata",locate_method_key)[1] #得到定位所需数据所在列号 locate_data_key=u"定位所需数据" locate_data_col_index=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(element_excel_path,"objname_locatemethod_locatedata",locate_data_key)[1] #得到元素是否需要二次定位的标志 second_locate=u"是否需要二次定位" is_second_locate=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(element_excel_path,'objname_locatemethod_locatedata',second_locate)[1] locate_method_dict={'id':By.ID,'css':By.CSS_SELECTOR,'xpath':By.XPATH,'linktext':By.LINK_TEXT,'classname':By.CLASS_NAME} old_first_how=element_sheet.cell_value(row_index,locate_method_col_index) what=element_sheet.cell_value(row_index,locate_data_col_index) new_first_how=locate_method_dict[old_first_how] judgeIsSecondLocate_flag=LocateElementCommonClass.CommonClass().judgeSecondLocateElement(is_second_locate) if not(judgeIsSecondLocate_flag): pass
def getOperateMethod(self, element): excel = ReadExcel.ReadExcel() operateElement_excel_path = "F:\\pytest\\xebest-autotest\\Data\\send_goods.xls" operateElement_sheet = excel.getTableBySheetName( operateElement_excel_path, "operate_method") #得到操作方式所在列 operate_method_key = u"操作方式" operate_method_col_index = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(operateElement_excel_path, "operate_method", operate_method_key)[1] #得到需要定位的元素所在的行号 row_index = get_number_by_data.GetRowAndColNumber().getRowAndColNumber( operateElement_excel_path, "operate_method", element)[1]
def getAddProductDataByTestcaseid(self, testcaseid): """根据传递过来得testcaseid去拿到发布产品所需要填写的内容""" excel = ReadExcel.ReadExcel() testcase_excelpath = "F:\\pytest\\editAutotest\\Data\\addProduct_data.xls" testcase_sheet = excel.getTableBySheetName(testcase_excelpath, "addproduct_data") row_col_number_list = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(testcase_excelpath, "addproduct_data", testcaseid) data_list = [] # product_title:产品标题,key_word:关键词,standard:规格,producter:生产厂家,quality_date:保质期,storage_conditions:存储条件 # product_allow_id:生产许可证号,product_standard_id:产品标准号,shop_price:批发价,retail_price:零售价 # supply_amount:供货量,min_amount:最小起订量,sendproduct_limit:发货期限,picture_path:图片地址,product_summary:产品简介,check_code:验证码 element_list = [ 'product_title', 'key_word', 'standard', 'producter', 'quality_date', 'storage_conditions', 'product_allow_id', 'product_standard_id', 'shop_price', 'retail_price', 'supply_amount', 'min_amount', 'sendproduct_limit', 'picture_path', 'product_summary', 'check_code' ] col_index = 2 for i in range(element_list.__len__()): element_list[i] = testcase_sheet.cell_value( row_col_number_list[0], row_col_number_list[1] + col_index) col_index += 1 for index in range(element_list.__len__()): data_list.append(element_list[index]) return data_list
def getLocatDataAndMethod(self, element, zhuce_element_list, excel_path, name_sheet_list): # path_excel=Get_ExcelPath_SheetName.Get_ExcelPath_SheetName().getExcelPath("F:\\Community_DD\\Data\\zhuce.xls","excelpath_sheetname") # name_sheet=(Get_ExcelPath_SheetName.Get_ExcelPath_SheetName().GetSheetName("F:\\Community_DD\\Data\\zhuce.xls","excelpath_sheetname"))[0] sheeet = ReadExcel.ReadExcel().getTableBySheetName( excel_path, name_sheet_list[0]) row_col_index = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(excel_path, name_sheet_list[0], element) old_how = sheeet.cell_value(row_col_index[0], (row_col_index[1] + 1)) what = sheeet.cell_value(row_col_index[0], (row_col_index[1] + 2)) #在这里增加一个字典是因为如果直接把By.ID写在excel里的话,取出来不能用 locate_method_dict = { 'id': By.ID, 'css': By.CLASS_NAME, 'xpath': By.XPATH, 'linktext': By.LINK_TEXT, 'swipe': 'swipe' } new_how = locate_method_dict[old_how] how_what = [] how_what.append(element) how_what.append(new_how) how_what.append(what) how_what.append( self.getOperateMethod(element, excel_path, name_sheet_list)) how_what.append( self.assertMoreLocate(element, excel_path, name_sheet_list)) return how_what
def operateElement(self, br, object_name, located_element, username, password, alertmessage): """该函数作用就是去操作已经定位到的元素,操作方式为sendkey或者click """ br = br object_name = object_name located_element = located_element excel = ReadExcel.ReadExcel() operate_method_excelpath = "F:\\pytest\\xebest-autotest\\Data\\login_data.xls" operate_method_sheet = excel.getTableBySheetName( operate_method_excelpath, "operate_method") row_col_number_list = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(operate_method_excelpath, "operate_method", object_name) operate_method = operate_method_sheet.cell_value( row_col_number_list[0], row_col_number_list[1] + 1) print object_name if operate_method == 'click': located_element.click() time.sleep(5) elif operate_method == 'sendkey' and object_name == 'username': located_element.clear() located_element.send_keys(username) print username time.sleep(5) elif operate_method == 'sendkey' and object_name == 'password': located_element.clear() located_element.send_keys(password) print password time.sleep(5)
def judgeElementIsOperate(self,element,testcase_id): excel=ReadExcel.ReadExcel() excel_path="F:\\pytest\\xebest-autotest\\Data\\deal_order.xls" excel_sheet=excel.getTableBySheetName(excel_path,"isoperateElement") #得到元素所在的行号 row_index=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(excel_path,"isoperateElement",element)[0] #得到测试用例所在的列号 col_index=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(excel_path,"isoperateElement",testcase_id)[1] operateFlag=excel_sheet.cell_value(row_index,col_index) if operateFlag=="Y": return True else: return False
def getRegisterDataByTestcaseId(self, testcaseid): register_exclepath = "F:\\pytest\\xebest-autotest\\Data\\registerByPhoneNumber_data.xls" register_sheetname = "register_data" register_sheet = ReadExcel.ReadExcel().getTableBySheetName( register_exclepath, register_sheetname) row_col_number_list = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(register_exclepath, register_sheetname, testcaseid) # email-address:邮箱地址,loginpassword:登录密码,reloginpassword:确认登录密码,phonenumber:手机号码,smscheckcode:短信验证码 # picturecheckcode:图片验证码 element_list = [ 'email-address', 'loginpassword', 'reloginpassword', 'phonenumber', 'smscheckcode', 'picturecheckcode' ] register_data_list = [] col_index = 2 for i in range(element_list.__len__()): register_data_list.append( register_sheet.cell_value(row_col_number_list[0], (row_col_number_list[1]) + col_index)) col_index += 1 return register_data_list
def judgeElementIsLocate(self, element, caseid): excel = ReadExcel.ReadExcel() element_path = "F:\\pytest\\xebest-autotest\\Data\\pay_by_balance.xls" element_sheet = excel.getTableBySheetName(element_path, "isoperateElement") #得到测试用例id所在列号 col_index = get_number_by_data.GetRowAndColNumber().getRowAndColNumber( element_path, "isoperateElement", caseid)[1] #得到需要定位的元素所在的行号 row_index = get_number_by_data.GetRowAndColNumber().getRowAndColNumber( element_path, "isoperateElement", element)[0] locate_flag = element_sheet.cell_value(row_index, col_index) if locate_flag == 'Y': return True else: return False
def getData(self, element_key): login_excel_path = r"F:\AutotestCode\Data\login_data.xls" login_sheetname = "username_password_data" sheet = ReadExcel.ReadExcel().getTableBySheetName( login_excel_path, login_sheetname) row_col_list = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(login_excel_path, login_sheetname, element_key) data = sheet.cell_value(row_col_list[0] + 1, (row_col_list[1])) return data
def judgeElementIsOperate(self,objname): judge_excelpath="F:\\pytest\\xebest-autotest\\Data\\registerByPhoneNumber_data.xls" judge_sheetname="isoperateElement" judge_sheet=ReadExcel.ReadExcel().getTableBySheetName(judge_excelpath,judge_sheetname) row_col_list=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(judge_excelpath,judge_sheetname,objname) if judge_sheet.cell_value(row_col_list[0],(row_col_list[1]+1))=="Y": return True else: return False
def getOperateMethod(self, login_object): login_excel_path = r"F:\AutotestCode\Data\login_data.xls" login_sheetname = "operate_method" sheet = ReadExcel.ReadExcel().getTableBySheetName( login_excel_path, login_sheetname) row_col_list = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(login_excel_path, login_sheetname, login_object) operate_method = sheet.cell_value(row_col_list[0], (row_col_list[1] + 1)) return operate_method
def opermateQuotePriceElement(self, browser, located_element, locate_object, send_data): browser = browser located_element = located_element locate_object = locate_object send_data_list = send_data excel = ReadExcel.ReadExcel() operate_method_excelpath = "F:\\pytest\\xebest-autotest\\Data\\quoteprice_data.xls" operate_method_sheet = excel.getTableBySheetName( operate_method_excelpath, "operate_method") #得到操作方式所在的列 operateData_key = u"操作方式" opreatemethod_colNumber = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(operate_method_excelpath, "operate_method", operateData_key)[1] #得到操作方式所在的行 opreatemethod_rowNumber = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(operate_method_excelpath, "operate_method", locate_object)[0] #得到操作方式 operate_method = operate_method_sheet.cell_value( opreatemethod_rowNumber, opreatemethod_colNumber) if operate_method == "click": located_element.click() time.sleep(2) elif operate_method == "sendkey" and locate_object == u'首页搜索输入框': located_element.clear() # print send_data_list[0] located_element.send_keys(send_data_list[0]) elif operate_method == "sendkey" and locate_object == u"产品单价": located_element.clear() located_element.send_keys(int(send_data_list[1])) elif operate_method == "sendkey" and locate_object == u"产品数量": located_element.clear() located_element.send_keys(int(send_data_list[2])) elif operate_method == "sendkey" and locate_object == u"报价描述": located_element.clear() located_element.send_keys(send_data_list[3])
def getOperateMethod(self, objname): register_exclepath = "F:\\pytest\\xebest-autotest\\Data\\register_data.xls" register_sheetname = "operate_method" register_sheet = ReadExcel.ReadExcel().getTableBySheetName( register_exclepath, register_sheetname) row_col_list = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(register_exclepath, register_sheetname, objname) element_operate_method = register_sheet.cell_value( row_col_list[0], (row_col_list[1] + 1)) return element_operate_method
def operateLocatedElement(self, element, located_element): element = element located_element = located_element excel = ReadExcel.ReadExcel() operate_excel_path = "F:\\pytest\\xebest-autotest\\Data\\deal_order.xls" operate_excel_sheet = excel.getTableBySheetName( operate_excel_path, "operate_method") #得到当前操作的元素在操作方式表中所在行 row_index = get_number_by_data.GetRowAndColNumber().getRowAndColNumber( operate_excel_path, "operate_method", element)[0] #得到操作方式所在列 operateMethod_value = u"操作方式" col_index = get_number_by_data.GetRowAndColNumber().getRowAndColNumber( operate_excel_path, "operate_method", operateMethod_value)[1] operateMethod = operate_excel_sheet.cell_value(row_index, col_index) if operateMethod == "click": located_element.click() time.sleep(3)
def judgeElementIsOperate(self,caseId,objectName): """ 判断该元素是否需要操作 """ excel=ReadExcel.ReadExcel() judge_excelpath="F:\\pytest\\xebest-autotest\\Data\\addProduct_data.xls" judge_sheet=excel.getTableBySheetName(judge_excelpath,"isoperateElement") judge_sheet_rows=judge_sheet.nrows #得到caseid所在的列号 row_col_number_list1=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(judge_excelpath,"isoperateElement",caseId) colNumber=row_col_number_list1[1] #得到元素所在的行号 row_col_number_list2=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(judge_excelpath,"isoperateElement",objectName) rowNumber=row_col_number_list2[0] if judge_sheet.cell_value(rowNumber,colNumber)=="Y": return True else: return False
def getRegisterObjectLocateMethod(self,browser,register_data_list,register_object): register_exclepath="F:\\pytest\\xebest-autotest\\Data\\registerByPhoneNumber_data.xls" register_sheetname="objname_locatemethod_locatedata" register_sheet=ReadExcel.ReadExcel().getTableBySheetName(register_exclepath,register_sheetname) row_col_list=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(register_exclepath,register_sheetname,register_object) old_how=register_sheet.cell_value(row_col_list[0],(row_col_list[1]+1)) what=register_sheet.cell_value(row_col_list[0],(row_col_list[1]+2)) #在这里增加一个字典是因为如果直接把By.ID写在excel里的话,取出来不能用 locate_method_dict={'id':By.ID,'css':By.CSS_SELECTOR,'xpath':By.XPATH,'linktext':By.LINK_TEXT} new_how=locate_method_dict[old_how] self.locateRegisterObject(browser,register_data_list,register_object,new_how,what)
def getOperateMethod(self, element, excel_path, name_sheet_list): # path_excel=Get_ExcelPath_SheetName.Get_ExcelPath_SheetName().getExcelPath("F:\\Community_DD\\Data\\zhuce.xls","excelpath_sheetname") # name_sheet=(Get_ExcelPath_SheetName.Get_ExcelPath_SheetName().GetSheetName("F:\\Community_DD\\Data\\zhuce.xls","excelpath_sheetname"))[1] sheet = ReadExcel.ReadExcel().getTableBySheetName( excel_path, name_sheet_list[1]) row_col_list = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(excel_path, name_sheet_list[1], element) operate_method_data = sheet.cell_value(row_col_list[0], (row_col_list[1] + 1)) return operate_method_data
def getQuotePriceDataByTestcaseId(self,testcaseId): excel=ReadExcel.ReadExcel() testcase_excelpath="F:\\pytest\\xebest-autotest\\Data\\quoteprice_data.xls" testcase_sheet=excel.getTableBySheetName(testcase_excelpath,"quoteprice_data") send_data_list=[] row_col_number_list=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(testcase_excelpath,"quoteprice_data",testcaseId) cols=testcase_sheet.ncols for i in range(2,cols): send_data_list.append(testcase_sheet.cell_value(row_col_number_list[0],i)) return send_data_list
def getData(self, element_key, path_excel, name_sheet_list): # path_excel=Get_ExcelPath_SheetName.Get_ExcelPath_SheetName().getExcelPath("F:\\Community_DD\\Data\\zhuce.xls","excelpath_sheetname") # name_sheet=(Get_ExcelPath_SheetName.Get_ExcelPath_SheetName().GetSheetName("F:\\Community_DD\\Data\\zhuce.xls","excelpath_sheetname"))[2] sheet = ReadExcel.ReadExcel().getTableBySheetName( path_excel, name_sheet_list[2]) row_col_list = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(path_excel, name_sheet_list[2], element_key) data = sheet.cell_value(row_col_list[0] + 1, (row_col_list[1])) if type(data) == float: return int(data) else: return data
def getSendData(self, testcaseId): excel = ReadExcel.ReadExcel() send_data_path = "F:\\pytest\\xebest-autotest\\Data\\pay_by_balance.xls" send_data_sheet = excel.getTableBySheetName(send_data_path, "pay_by_balance") cols = send_data_sheet.ncols #得到测试用例id所在的行号 row_index = get_number_by_data.GetRowAndColNumber().getRowAndColNumber( send_data_path, "pay_by_balance", testcaseId)[0] send_data_list = [] for i in range(2, cols): send_data_list.append(send_data_sheet.cell_value(row_index, i)) return send_data_list
def assertMoreLocate(self, element, excel_path, name_sheet_list): # path_excel=Get_ExcelPath_SheetName.Get_ExcelPath_SheetName().getExcelPath("F:\\Community_DD\\Data\\zhuce.xls","excelpath_sheetname") # name_sheet=(Get_ExcelPath_SheetName.Get_ExcelPath_SheetName().GetSheetName("F:\\Community_DD\\Data\\zhuce.xls","excelpath_sheetname"))[0] sheet = ReadExcel.ReadExcel().getTableBySheetName( excel_path, name_sheet_list[0]) row_col_list = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(excel_path, name_sheet_list[0], element) isMoreLocate = sheet.cell_value(row_col_list[0], (row_col_list[1] + 3)) second_Locate_Index = "" if isMoreLocate == 'Y': second_Locate_Index = int( sheet.cell_value(row_col_list[0], (row_col_list[1] + 4))) return second_Locate_Index else: return 0
def operatePayElement(self,element,located_element,send_data_list): log=ResultLog.ResultLog() excel=ReadExcel.ReadExcel() operate_excel_path="F:\\pytest\\xebest-autotest\\Data\\pay_by_balance.xls" operate_sheet=excel.getTableBySheetName(operate_excel_path,"operate_method") #得到操作方式所在列 operate_method=u"操作方式" operate_method_col_index=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(operate_excel_path,"operate_method",operate_method)[1] #得到元素所在行 row_index=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(operate_excel_path,"operate_method",element)[0] operate_method_flag=operate_sheet.cell_value(row_index,operate_method_col_index) if operate_method_flag=='click': try: located_element.click() time.sleep(3) except: print ("element:%s cannot operate" %element) raise ValueError("no element can operate") else: log.info("元素:%s 操作成功" %(element.encode('utf-8'))) elif operate_method_flag=='sendkey' and element==u'CheckCodeInput': checkcode=SmsCheckCode.SmsCheckCode().getCheckCode() time.sleep(2) if checkcode: log.info("验证码获取成功,获取到的验证码为:%s" %(checkcode.encode('utf-8'))) else: log.info("验证码获取失败") located_element.send_keys(checkcode) elif operate_method_flag=='sendkey' and element==u'PayPasswordInput': located_element.clear() located_element.send_keys(send_data_list[0])
def getUsernameAndPasswordByTestcaseid(self,testcaseid): """根据传递过来得testcaseid去拿到用户名、密码、弹出框内容""" excel=ReadExcel.ReadExcel() testcase_excelpath="F:\\pytest\\editAutotest\\Data\\login_data.xls" testcase_sheet=excel.getTableBySheetName(testcase_excelpath,"username_password_data") row_col_number_list=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(testcase_excelpath,"username_password_data",testcaseid) data_list=[] user_name=testcase_sheet.cell_value(row_col_number_list[0],row_col_number_list[1]+2) pass_word=testcase_sheet.cell_value(row_col_number_list[0],row_col_number_list[1]+3) alert_message=testcase_sheet.cell_value(row_col_number_list[0],row_col_number_list[1]+4) data_list.append(user_name) data_list.append(pass_word) data_list.append(alert_message) return data_list
def getSendDataList(self, testcaseId): excel = ReadExcel.ReadExcel() sendGoods_excel_path = "F:\\pytest\\xebest-autotest\\Data\\send_goods.xls" sendGoods_sheet = excel.getTableBySheetName(sendGoods_excel_path, "send_goods") sendGoods_data_list = [] #得到测试用例编号所在行号 row_index = get_number_by_data.GetRowAndColNumber().getRowAndColNumber( sendGoods_excel_path, "send_goods", testcaseId)[0] cols = sendGoods_sheet.ncols for i in range(2, cols): sendGoods_data_list.append(sendGoods_sheet.cell_value( row_index, i)) return sendGoods_data_list
def getLocateMethodAndData(self, browser, objname, username, password, alertmessage): """根据需要定位的元素的名称得到需要定位的元素的定位方式以及定位数据""" obj_name = objname br = browser excel_path = "F:\\pytest\\xebest-autotest\\Data\\login_data.xls" row_col_number_list = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(excel_path, "objname_locatemethod_locatedata", obj_name) excel = ReadExcel.ReadExcel() locate_method_data_excelpath = "F:\\pytest\\xebest-autotest\\Data\\login_data.xls" locate_method_data_sheet = excel.getTableBySheetName( locate_method_data_excelpath, "objname_locatemethod_locatedata") old_how = locate_method_data_sheet.cell_value( row_col_number_list[0], row_col_number_list[1] + 1) what = locate_method_data_sheet.cell_value(row_col_number_list[0], row_col_number_list[1] + 2) #在这里增加一个字典是因为如果直接把By.ID写在excel里的话,取出来不能用 locate_method_dict = { 'id': By.ID, 'css': By.CSS_SELECTOR, 'xpath': By.XPATH, 'linktext': By.LINK_TEXT } #下述代码判断定位方式 new_how = locate_method_dict[old_how] # if old_how=='linktext': # new_how=locate_method_dict["linktext"] # elif old_how=='id': # new_how=locate_method_dict['id'] # elif old_how=='css': # new_how=locate_method_dict["css"] # elif old_how=='xpath': # new_how=locate_method_dict["xpath"] print obj_name, new_how, what #调用定位元素方法,并传递给该方法一个定位方式,定位值,元素名称,用户名,密码,弹出框内容 self.locateElement(br, new_how, what, obj_name, username, password, alertmessage)
def getLocateMethodAndData(self,br,element): element=element excel=ReadExcel.ReadExcel() object_excel_path="F:\\pytest\\xebest-autotest\\Data\\deal_order.xls" object_sheet=excel.getTableBySheetName(object_excel_path,"objname_locatemethod_locatedata") #得到元素所在行 row_index=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(object_excel_path,"objname_locatemethod_locatedata",element)[0] #得到定位方式所在列 locateMethod_Key=u"定位方式简述" locateMethod_colNumber=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(object_excel_path,"objname_locatemethod_locatedata",locateMethod_Key)[1] #得到定位所需数据所在列 locateData_key=u"定位所需数据" locateData_colNumber=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(object_excel_path,"objname_locatemethod_locatedata",locateData_key)[1] #得到判断元素是否需要二次定位的判断条件所在列 isSecondLocate_key=u"是否需要二次定位" SecondLocate_key_colNumber=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(object_excel_path,"objname_locatemethod_locatedata",isSecondLocate_key)[1] #存储从excel表中取出的定位方式和定位数据,以及判断是否需要二次定位的条件 old_how=object_sheet.cell_value(row_index,locateMethod_colNumber) old_what=object_sheet.cell_value(row_index,locateData_colNumber) secondLocate=object_sheet.cell_value(row_index,SecondLocate_key_colNumber) locate_method_dict={'id':By.ID,'css':By.CSS_SELECTOR,'xpath':By.XPATH,'linktext':By.LINK_TEXT} if not(CommonClass().judgeSecondLocateElement(secondLocate)): if old_how=="switchHandle": index=int(old_what) CommonClass().switchHandle(br,index) else: new_how=locate_method_dict[old_how] located_element=CommonClass().findElement(br,new_how,old_what) OperateDealOrderObject.OperateDealOrderObject().operateLocatedElement(element,located_element) else: new_first_how=locate_method_dict[old_how] #得到二次定位方式的值所在列 secondLocatemethod_key=u"二次定位的方式" secondLocate_colNumber=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(object_excel_path,"objname_locatemethod_locatedata",secondLocatemethod_key)[1] old_second_how=object_sheet.cell_value(row_index,secondLocate_colNumber) #得到二次定位所需值 secondLocateData_key=u"二次定位所需数据" secondLocateData_colNumber=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(object_excel_path,"objname_locatemethod_locatedata",secondLocateData_key)[1] secondLocate_what=object_sheet.cell_value(row_index,secondLocateData_colNumber) new_second_how=locate_method_dict[old_second_how] second_located_element=CommonClass().locateElementIndirectly(br,new_first_how,old_what,new_second_how,secondLocate_what) OperateDealOrderObject.OperateDealOrderObject().operateLocatedElement(element,second_located_element)
def getLocateElementList(self, browser, testcaseId, send_data_list): caseid = 'case_0010' excel = ReadExcel.ReadExcel() element_path = "F:\\pytest\\xebest-autotest\\Data\\pay_by_balance.xls" element_sheet = excel.getTableBySheetName( element_path, "objname_locatemethod_locatedata") rows = element_sheet.nrows #得到元素名称所在列 element_name = u"元素名称" col_index = get_number_by_data.GetRowAndColNumber().getRowAndColNumber( element_path, "objname_locatemethod_locatedata", element_name)[1] element_list = [] for i in range(1, rows): element_list.append(element_sheet.cell_value(i, col_index)) for element in element_list: if self.judgeElementIsLocate(element, caseid): self.getLoacteMethodAndData(browser, element, send_data_list) # print "元素:%s 需要被操作" %(element.encode('utf-8')) else: print "元素:%s 不需要被操作" % (element.encode('utf-8'))
def getLocateMethodAndValue(self, login_data_list, login_object): login_excel_path = r"F:\AutotestCode\Data\login_data.xls" login_sheetname = "objname_locatemethod_locatedata" sheet = ReadExcel.ReadExcel().getTableBySheetName( login_excel_path, login_sheetname) row_col_list = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(login_excel_path, login_sheetname, login_object) old_how = sheet.cell_value(row_col_list[0], (row_col_list[1] + 1)) what = sheet.cell_value(row_col_list[0], (row_col_list[1] + 2)) #在这里增加一个字典是因为如果直接把By.ID写在excel里的话,取出来不能用 locate_method_dict = { 'id': By.ID, 'css': By.CSS_SELECTOR, 'xpath': By.XPATH, 'linktext': By.LINK_TEXT } new_how = locate_method_dict[old_how] how_what = [] how_what.append(login_object) how_what.append(new_how) how_what.append(what) how_what.append(self.getOperateMethod(login_object)) return how_what
def opermateAddProductElement(self, br, object_name, located_element, data_list): br = br object_name = object_name located_element = located_element excel = ReadExcel.ReadExcel() operate_method_excelpath = "F:\\pytest\\editAutotest\\Data\\addProduct_data.xls" operate_method_sheet = excel.getTableBySheetName( operate_method_excelpath, "operate_method") row_col_number_list = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(operate_method_excelpath, "operate_method", object_name) operate_method = operate_method_sheet.cell_value( row_col_number_list[0], row_col_number_list[1] + 1) print object_name if operate_method == 'click': located_element.click() time.sleep(4) elif operate_method == 'sendkey' and object_name == u'产品标题': located_element.clear() located_element.send_keys(data_list[0]) elif operate_method == 'sendkey' and object_name == u'关键词': located_element.clear() located_element.send_keys(data_list[1]) elif operate_method == 'sendkey' and object_name == u'产品规格': located_element.clear() located_element.send_keys(data_list[2]) elif operate_method == 'sendkey' and object_name == u'生产厂家': located_element.clear() located_element.send_keys(data_list[3]) elif operate_method == 'sendkey' and object_name == u'保质期': located_element.clear() located_element.send_keys(int(data_list[4])) elif operate_method == 'sendkey' and object_name == u'存储条件': located_element.clear() located_element.send_keys(data_list[5]) elif operate_method == 'sendkey' and object_name == u'生产许可证号': located_element.clear() located_element.send_keys(data_list[6]) elif operate_method == 'sendkey' and object_name == u'产品标准号': located_element.clear() located_element.send_keys(data_list[7]) elif operate_method == 'sendkey' and object_name == u'批发价': located_element.clear() located_element.send_keys(int(data_list[8])) elif operate_method == 'sendkey' and object_name == u'零售价': located_element.clear() located_element.send_keys(int(data_list[9])) elif operate_method == 'sendkey' and object_name == u'供货量': located_element.clear() located_element.send_keys(int(data_list[10])) elif operate_method == 'sendkey' and object_name == u'最小起订量': located_element.clear() located_element.send_keys(int(data_list[11])) elif operate_method == 'sendkey' and object_name == u'发货期限': located_element.clear() located_element.send_keys(int(data_list[12])) elif operate_method == 'sendkey' and object_name == u'图片上传弹出框的浏览按钮': located_element.send_keys(data_list[13]) elif operate_method == 'sendkey' and object_name == u'产品简介': located_element.clear() located_element.send_keys(data_list[14]) elif operate_method == 'sendkey' and object_name == u'验证码': located_element.clear() located_element.send_keys(int(data_list[15]))
def getLoacteMethodAndData(self, browser, element, send_data_list): excel = ReadExcel.ReadExcel() locate_element_path = "F:\\pytest\\xebest-autotest\\Data\\pay_by_balance.xls" locate_element_sheet = excel.getTableBySheetName( locate_element_path, 'objname_locatemethod_locatedata') #得到需要定位的元素所在的行号 row_index = get_number_by_data.GetRowAndColNumber().getRowAndColNumber( locate_element_path, 'objname_locatemethod_locatedata', element)[0] #得到定位方式所在的列号 locate_mehtod = u"定位方式简述" locate_method_col_index = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(locate_element_path, 'objname_locatemethod_locatedata', locate_mehtod)[1] #得到定位元素所需要的数据所在的列号 locate_data = u"定位所需数据" locate_data_col_index = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(locate_element_path, 'objname_locatemethod_locatedata', locate_data)[1] #得到元素是否需要二次定位的标志 second_locate = u"是否需要二次定位" is_second_locate = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(locate_element_path, 'objname_locatemethod_locatedata', second_locate)[1] locate_method_dict = { 'id': By.ID, 'css': By.CSS_SELECTOR, 'xpath': By.XPATH, 'linktext': By.LINK_TEXT } old_locate_method = locate_element_sheet.cell_value( row_index, locate_method_col_index) what = locate_element_sheet.cell_value(row_index, locate_data_col_index) second_locate_flag = locate_element_sheet.cell_value( row_index, is_second_locate) new_locate_how = locate_method_dict[old_locate_method] if not (LocateElementCommonClass.CommonClass(). judgeSecondLocateElement(second_locate_flag)): located_element = LocateElementCommonClass.CommonClass( ).findElement(browser, new_locate_how, what, element) OperatePayByBalanceElement.OperatePayByBalanceElement( ).operatePayElement(element, located_element, send_data_list) else: #得到二次定位方式的值所在列 secondLocatemethod_key = u"二次定位的方式" secondLocate_colNumber = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(locate_element_path, "objname_locatemethod_locatedata", secondLocatemethod_key)[1] old_second_how = locate_element_sheet.cell_value( row_index, secondLocate_colNumber) #得到二次定位所需值 secondLocateData_key = u"二次定位所需数据" secondLocateData_colNumber = get_number_by_data.GetRowAndColNumber( ).getRowAndColNumber(locate_element_path, "objname_locatemethod_locatedata", secondLocateData_key)[1] secondLocate_what = locate_element_sheet.cell_value( row_index, secondLocateData_colNumber) new_second_how = locate_method_dict[old_second_how] second_located_element = LocateElementCommonClass.CommonClass( ).locateElementIndirectly(browser, new_locate_how, what, new_second_how, secondLocate_what) OperatePayByBalanceElement.OperatePayByBalanceElement( ).operatePayElement(element, second_located_element, send_data_list) # pp=LocatePayByBalanceObject() # pp.getLocateElementList()