def addHouseContact(): """审核委托合同""" try: base=Base() base.open(page.entrustContractPage, houseContractPage.contractSearchMould['tr_contract'], havaFrame=False) #配置文件读取委托合同信息 contractNum = get_conf('houseContractInfo', 'contractNum');if contractNum!=None:consoleLog(u'配置文件中获得委托合同编号:%s'%contractNum) sql = "SELECT audit_status from house_contract where contract_num = '%s' and deleted = 0" % contractNum.encode('utf-8') if sqlbase.get_count(sql) > 0: if sqlbase.serach(sql)[0] == 'AUDIT': pass else: base.input_text(houseContractPage.houseSearchMould['status'], 'AUDIT')#待审核 base.click(houseContractPage.contractSearchMould['search_button_loc']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) contractNum = base.script( "var a = $('[datagrid-row-index=\"0\"] > [field=\"contract_num\"] > div').text();return a", True).decode('utf-8') consoleLog(u'使用随机委托合同:%s 做审核操作' % contractNum, level='w') else: base.input_text(houseContractPage.houseSearchMould['status'], 'AUDIT') base.click(houseContractPage.contractSearchMould['search_button_loc']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) contractNum = base.script( "var a = $('[datagrid-row-index=\"0\"] > [field=\"contract_num\"] > div').text();return a", True).decode( 'utf-8') consoleLog(u'使用随机委托合同:%s 做审核操作' % contractNum, level='w') base.input_text(houseContractPage.houseSearchMould['status'], '') base.input_text(houseContractPage.contractSearchMould['contract_num_loc'], contractNum);consoleLog(u'实际审核委托合同编号:%s' % contractNum) base.click(houseContractPage.contractSearchMould['search_button_loc']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) base.dblclick(houseContractPage.contractSearchMould['tr_contract'], checkLoc=houseContractPage.addHouseContractMould['contract_num_loc']) # 驳回 base.click(houseContractPage.addHouseContractMould['tab_info_loc'], index=3) base.script('$("button[status=\'REJECTED\']")[1].click()') base.input_text(houseContractPage.addHouseContractMould['contract_audit_content'], u'自动化测试审核数据') base.click(houseContractPage.addHouseContractMould['contract_audit_confirm']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) base.dblclick(houseContractPage.contractSearchMould['tr_contract'], checkLoc=houseContractPage.addHouseContractMould['contract_num_loc']) # 审核租金 base.click(houseContractPage.addHouseContractMould['tab_info_loc'], index=1) base.click(houseContractPage.addHouseContractMould['rent_detail_selectAll']) base.click(houseContractPage.addHouseContractMould['rent_audit_loc']) base.click(houseContractPage.addHouseContractMould['audit_pass_loc']) base.click(houseContractPage.addHouseContractMould['rent_audit_confirm']) # 初审 base.click(houseContractPage.addHouseContractMould['tab_info_loc'], index=3) base.script('$("button[status=\'PASS\']")[2].click()') base.click(houseContractPage.addHouseContractMould['contract_audit_confirm']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) base.dblclick(houseContractPage.contractSearchMould['tr_contract'], checkLoc=houseContractPage.addHouseContractMould['contract_num_loc']) # 复审 base.click(houseContractPage.addHouseContractMould['tab_info_loc'], index=3) base.script('$("button[status=\'APPROVED\']")[1].click()') base.click(houseContractPage.addHouseContractMould['contract_audit_confirm']) base.check_submit() consoleLog(u'委托合同:%s 审核成功' % contractNum) finally: base.driver.quit()
def auditApartmentContract(): """删除核出租合同终止结算""" try: base = Base() base.open(page.contractEndPage, apartmentContractEndPage.searchMould['tr_contract_end'], havaFrame=False) contractNum = get_conf('apartmentContractInfo', 'contractnum') sql = "SELECT * from apartment_contract where contract_num = '%s' and deleted = 0 and contract_status != 'EFFECTIVE'" % contractNum.encode( 'utf-8') if sqlbase.get_count(sql) > 0: base.input_text( apartmentContractEndPage.searchMould['contract_num_loc'], contractNum) else: consoleLog(u'未找到出租合同终止结算的测试数据,跳过删除用例', level='w') return base.click(apartmentContractEndPage.searchMould['search_button_loc']) base.staleness_of( apartmentContractEndPage.searchMould['tr_contract_end']) base.click( apartmentContractEndPage.addContractEndMould['delete_button']) base.click(apartmentContractEndPage. addContractEndMould['delete_button_confirm']) base.check_submit() consoleLog(u'出租合同 %s 终止结算删除成功' % contractNum) finally: base.driver.quit()
def addResidential(): """删除楼盘""" try: mybase = Base() mybase.open(page.residentiaPage, residentiaPage.searchResidentialModule['search_btn'], havaFrame=False);consoleLog(u'打开JSP页面') # mybase.open(Page.residentiaPage, (By.ID, 'search_btn'), havaFrame=False) sql = 'select residential_name from residential where residential_name like "AutoTest-%" and deleted<>1' ResidentiaName = sqlbase.serach(sql)[0];consoleLog(u'查询结果:%s' % ResidentiaName) # ResidentiaName='AutoTest-0706-103107' mybase.input_text((By.CSS_SELECTOR, "#residential_name"), ResidentiaName,event=u'输入楼盘名称:')\ # ;consoleLog(u'输入楼盘名称') mybase.click((By.ID, 'search_btn'));consoleLog(u'点击查找') mybase.staleness_of(residentiaPage.searchResidentialModule['tr_residential']);consoleLog(u'等待数据刷新') mybase.click((By.CSS_SELECTOR, '#residential + div > div:nth-child(2) > div > div:nth-child(2) > div:nth-child(2) > table > tbody > tr:nth-child(1) > td:nth-child(17) > div > button:nth-child(5)'));consoleLog(u'点击删除') # 点击删除 mybase.click((By.CSS_SELECTOR, 'div>a>span>span'),1);consoleLog(u'确定删除') # 点击确定 mybase.click((By.ID, 'search_btn'));consoleLog(u'再次查找') # 再次查找 try: WebDriverWait(mybase.driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, '#residential + div > div:nth-child(2) > div > div:nth-child(2) > div:nth-child(2) > table > tbody > tr:nth-child(1) > td:nth-child(11) ')), u'未找确定楼盘 %s 信息' % ResidentiaName) raise Exception(u'楼盘 %s 信息存在,删除失败'%ResidentiaName) except u'未找确定楼盘 %s 信息' % ResidentiaName: consoleLog(u'楼盘删除成功') finally: mybase.driver.quit()
def auditDefaultAchievement(): """审核违约业绩""" try: base = Base() base.open( page.apartmentAchievementPage, apartmentDefaultAchievementPage.searchContractMould['tr_contract'], havaFrame=False) contractnum = 'WB1-0067404' base.input_text(apartmentDefaultAchievementPage. searchContractMould['contract_num_loc'], contractnum.encode('utf-8')) #输入合同号 base.click(apartmentDefaultAchievementPage. searchContractMould['search_button_loc']) #查找 base.staleness_of(apartmentDefaultAchievementPage. searchContractMould['tr_contract']) #等待第一条数据刷新 base.dblclick( apartmentDefaultAchievementPage.searchContractMould['tr_contract'], apartmentDefaultAchievementPage. detailDefaultMoudle['house_code_loc']) #点击第一条数据 #数据校验 base.click(apartmentDefaultAchievementPage. detailDefaultMoudle['audit_button_loc']) #审核 base.input_text(apartmentDefaultAchievementPage. detailAchievementMoudle['contract_audit_content'], u'自动化测试审核意见') #审核意见 base.click(apartmentDefaultAchievementPage. detailAchievementMoudle['contract_audit_confirm']) #确定 base.check_submit() #等待提交完成 finally: base.driver.quit()
def addHouseContact(): """审核委托合同""" try: base = Base() base.open(page.entrustContractPage, houseContractPage.contractSearchMould['tr_contract'], havaFrame=False) #配置文件读取合同编号 contractNum = get_conf('houseContractInfo', 'contractNum') sql = "SELECT * from house_contract WHERE contract_num = '%s' and deleted = 0" % contractNum.encode( 'utf-8') if sqlbase.get_count(sql) != 0: base.input_text( houseContractPage.contractSearchMould['contract_num_loc'], contractNum) base.click( houseContractPage.contractSearchMould['search_button_loc']) base.staleness_of( houseContractPage.contractSearchMould['tr_contract']) base.click( houseContractPage.addHouseContractMould['delete_button']) base.click(houseContractPage. addHouseContractMould['delete_button_confirm']) base.check_submit() consoleLog(u'委托合同删除成功') else: consoleLog(u'未找到委托合同 %s,略过删除功能' % contractNum) finally: base.driver.quit()
def addReimbursement(): """新增报销单""" try: base = Base() base.open(page.apartmentPage, apartmentPage.apartmentMould['tr_apartment']) # 配置文件中读取房源 apartmentCode = get_conf('houseInfo', 'apartmentcode') consoleLog(u'确认房源 %s 是否存在' % apartmentCode) sql = "SELECT * from apartment where apartment_code = '%s' and deleted = 0 and is_active = 'Y'" % apartmentCode.encode( 'utf-8') if sqlbase.get_count(sql) > 0: base.input_text(apartmentPage.apartmentMould['residential_name'], apartmentCode) else: sql = "SELECT apartment_code from apartment where deleted = 0 and is_active = 'Y' and city_code = '330100' LIMIT 1" apartmentCode = sqlbase.serach(sql)[0] base.input_text(apartmentPage.apartmentMould['residential_name'], apartmentCode) base.click(apartmentPage.apartmentMould['search_btn']) base.staleness_of(apartmentPage.apartmentMould['tr_apartment']) base.click(apartmentPage.apartmentMould['details_btn']) base.click(apartmentPage.apartmentMould['expense_btn']) # 报销费用 base.input_text(apartmentPage.apartmentMould['memo'], u'报销单自动化测试备注') base.type_select(apartmentPage.typeMould['item_type'], 'WATER') base.type_select(apartmentPage.typeMould['bear_type'], 'COMPANY') base.input_text(apartmentPage.apartmentMould['amount'], '666') base.type_date(apartmentPage.typeMould['start_date'], u'2017-08-08') base.type_date(apartmentPage.typeMould['end_date'], u'2017-08-28') base.type_select(apartmentPage.typeMould['vacant'], 'Y') base.type_select(apartmentPage.typeMould['first'], 'Y') base.type_select(apartmentPage.typeMould['source_bear_id'], 'AutoTest-13666666665') # 报销人 base.type_select(apartmentPage.typeMould['moneytype'], 'CUSTOMER_AGENT_PYMENT') base.type_select(apartmentPage.typeMould['customer_name'], 'AutoTest') base.type_select(apartmentPage.typeMould['customer_bank_location'], 'ABC') base.type_select(apartmentPage.typeMould['bank_card'], '6228481561239334717') # base.input_text(base.apartmentMould['brepay_company'],u'杭州爱上租科技有限公司') base.click(apartmentPage.apartmentMould['submit_btn']) base.check_submit() consoleLog(u'房源 %s 的报销单新增成功' % apartmentCode) sql = "SELECT expense_num from reimbursement_expense where apartment_id = (SELECT apartment_id from apartment where apartment_code = '%s')" % apartmentCode.encode( 'utf-8') consoleLog(u'记录房源 %s 的报销编号' % apartmentCode) num = sqlbase.serach(sql)[0] #写入配置文件 set_conf('houseInfo', apartmentReimbursementNum=num) finally: base.driver.quit()
def auditHouse(): """审核房源""" try: base = Base() #需要从配置文件读取新增的房源信息才能做审核操作 residential = get_conf('residential', 'residentialname') building = get_conf('residential', 'buildingname') unit = get_conf('residential', 'unitname') houseno = get_conf('residential', 'housenoname') address = residential + building + unit + houseno base.open(page.houseAuditPage, houseAuditPage.houseAuditPageloc['audit_btn']) base.input_text(houseAuditPage.searchMould['residentia_name_loc'], residential) base.input_text(houseAuditPage.searchMould['building_name_loc'], building) base.input_text(houseAuditPage.searchMould['unit_name_loc'], unit) base.input_text(houseAuditPage.searchMould['houseno_name_loc'], houseno) base.click(houseAuditPage.searchMould['search_button_loc']) base.staleness_of(houseAuditPage.searchMould['tr_house']) base.script('$("#audit_btn").click()') base.click(houseAuditPage.houseAuditPageloc['cancel_btn']) # 审核通过 for i in range(5): try: base.click( houseAuditPage. houseAuditPageloc['iszCommonWorkflowPageSure']) # 确定 break except: base.click( houseAuditPage.houseAuditPageloc['cancel_btn']) # 审核通过 base.check_submit() try: base.solr('house', get_conf('testCondition', 'test')) consoleLog(u'solr的house-core增量成功') except: consoleLog(Exception.message, level='e') consoleLog(u'执行house-core的增量失败,请检查solr是否正常', level='w') pass consoleLog(u'房源 %s审核成功' % address) house = sqlbase.serach( "SELECT residential_id,building_id,unit_id,house_no_id,house_id,house_code from house where property_name like '%s%%' and deleted = 0" % address.encode('utf-8')) set_conf('residential', residentialID=house[0], buildingID=house[1], unitID=house[2], housenoID=house[3]) set_conf('houseInfo', houseID=house[4], houseCode=house[5]) finally: base.driver.quit()
def deleteHouseContractEnd(): """删除委托合同终止结算""" try: base = Base() base.open( page.contractEndPage, houseContractEndPage.searchMould['contract_search_button_loc'], havaFrame=False) base.click(houseContractEndPage.addContractEndMould['tab_info'], index=1) #配置文件读取待审核的委托合终止结算 contractNum = get_conf('houseContractInfo', 'contractnum') consoleLog(u'查询委托合同 %s 是否存在终止结算' % contractNum) sql = "SELECT * from house_contract where contract_num = '%s' and deleted = 0 and audit_status = 'APPROVED' and contract_status != 'EFFECTIVE'" % contractNum.encode( 'utf-8') if sqlbase.get_count(sql) > 0: base.input_text( houseContractEndPage.searchMould['end_contract_num_loc'], contractNum) base.click( houseContractEndPage.searchMould['end_search_button_loc']) base.staleness_of( houseContractEndPage.searchMould['tr_contract_end']) else: base.click( houseContractEndPage.searchMould['end_search_button_loc']) base.staleness_of( houseContractEndPage.searchMould['tr_contract_end']) contractNum = base.script( "var a = $('#ContractReceivable_table_wt > div:nth-child(1) > div:nth-child(2) > div.datagrid-view > div.datagrid-view2 > div.datagrid-body > " "table > tbody > tr:nth-child(1) > td[field=\"contract_num\"] > div').text();return a", True).decode('utf-8') consoleLog(u'未找到测试合同的终止结算,随机删除委托合同 %s 的终止结算' % contractNum) base.click(houseContractEndPage.addContractEndMould['delete_button']) base.click( houseContractEndPage.addContractEndMould['delete_button_confirm']) base.check_submit() consoleLog(u'委托合同 %s 终止结算删除成功' % contractNum) finally: base.driver.quit()
def deleteCustomer(): """删除租前客户信息""" try: base=Base() base.open(page.customerListPage, customerPage.listMould['tr_customer'], havaFrame=False) #配置文件中读取租前客户信息 customerName = get_conf('customerInfo', 'customerName') sql = "SELECT * from customer where customer_name = '%s' and deleted = 0" % customerName.encode('utf-8') if sqlbase.get_count(sql) > 0: base.input_text(customerPage.listMould['customer_name_search'], customerName) base.click(customerPage.listMould['search_button']) base.staleness_of(customerPage.listMould['tr_customer']) base.click(customerPage.listMould['delete_button']) base.click(customerPage.listMould['alert_confirm']) base.check_submit() consoleLog(u'租前客户 %s 删除成功' % customerName) else: consoleLog(u'未找到租前客户 %s,跳过删除' % customerName) finally: base.driver.quit()
def deleteApartmentContract(): """删除出租合同""" try: base=Base() base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract'], havaFrame=False) #配置文件读取合同编号信息 contractNum = get_conf('apartmentContractInfo', 'contractnum') sql = "SELECT * from apartment_contract where contract_num = '%s' and deleted = 0" % contractNum.encode('utf-8') if sqlbase.get_count(sql) > 0: base.input_text(apartmentContractPage.searchContractMould['contract_num_loc'], contractNum.decode('utf-8')) base.click(apartmentContractPage.searchContractMould['search_button_loc']) base.staleness_of(apartmentContractPage.searchContractMould['tr_contract']) base.script("$('#data_perm_btn').click()") base.click(apartmentContractPage.addApartmentContractMould['delete_button_confirm']) base.check_submit() consoleLog(u'出租合同 %s 删除成功' % contractNum) else: consoleLog(u'未找到出租合同 %s ,跳过删除用例' % contractNum) finally: base.driver.quit()
def auditReimbuisement(): """审核报销单""" try: base=Base() base.open(page.reimbursementExpenseListPage, reimbuisementPage.searchMould['tr_reimbuisement'], havaFrame=False) #配置文件读取报销单信息 expenseNum = get_conf('houseInfo', 'apartmentReimbursementNum') sql = "SELECT * from reimbursement_expense where expense_num = '%s' and deleted = 0" % expenseNum.encode( 'utf-8') consoleLog(u'查询是否存在测试房源的报销单') if sqlbase.get_count(sql) > 0: base.input_text(reimbuisementPage.searchMould['expenseNum_loc'], expenseNum) else: sql = "SELECT rr.expense_num from reimbursement_expense rr INNER JOIN house hh on rr.house_id = hh.house_id where hh.city_code = 330100 " \ "and rr.deleted = 0 and rr.audit_status = 'NO_AUDIT' limit 1" consoleLog(u'未找到测试房源的报销单,随机查找报销单做审核操作') if sqlbase.get_count(sql) > 0: expenseNum = sqlbase.serach(sql)[0] base.input_text(reimbuisementPage.searchMould['expenseNum_loc'], expenseNum);consoleLog(u'输入报销单:%s' % expenseNum) else: consoleLog(u'未找到符合条件的报销单,跳过审核用例') return base.click(reimbuisementPage.searchMould['search_button']) base.staleness_of(reimbuisementPage.searchMould['tr_reimbuisement']) base.dblclick(reimbuisementPage.searchMould['tr_reimbuisement']) base.click(reimbuisementPage.editMould['bohui_loc']) base.input_text(reimbuisementPage.editMould['audit_content'], 'AutoTest') base.click(reimbuisementPage.editMould['audit_confirm']) base.staleness_of(reimbuisementPage.searchMould['tr_reimbuisement']) base.dblclick(reimbuisementPage.searchMould['tr_reimbuisement']) base.click(reimbuisementPage.editMould['chushen_loc']) base.click(reimbuisementPage.editMould['audit_confirm']) base.staleness_of(reimbuisementPage.searchMould['tr_reimbuisement']) base.dblclick(reimbuisementPage.searchMould['tr_reimbuisement']) base.click(reimbuisementPage.editMould['fushen_loc']) base.click(reimbuisementPage.editMould['audit_confirm']) base.check_submit() base.click(reimbuisementPage.editMould['payment_button'], index=0) base.click(reimbuisementPage.editMould['payment_type'], index=0) base.input_text(reimbuisementPage.editMould['payment_remark'], 'AutoTest') base.click(reimbuisementPage.editMould['payment_save']) base.staleness_of(reimbuisementPage.searchMould['tr_reimbuisement']) base.dblclick(reimbuisementPage.searchMould['tr_reimbuisement']) base.click(reimbuisementPage.editMould['payment_audit']) base.click(reimbuisementPage.editMould['payment_audit_save']) consoleLog(u'报销单 %s 审核成功' % expenseNum) finally: base.driver.quit()
def addUser(username ,userphone ,userpost ,userrole ,usermail): """新增用户""" try: base=Base() base.open(page.userPage, userPage.addUser_loc, havaFrame=False) base.click(userPage.addUser_loc) base.input_text(userPage.addUserMould['user_name_loc'], username) base.type_combotree(userPage.addUserMould['user_dep_loc'], '00000000000000000000000000000000') base.input_text(userPage.addUserMould['user_phone_loc'], userphone) base.type_select(userPage.addUserMould['user_post_loc'], userpost) base.type_select(userPage.addUserMould['user_role_loc'], userrole) base.input_text(userPage.addUserMould['user_mail_loc'], usermail) base.click(userPage.addUserMould['submit_loc']) base.check_submit() consoleLog(u'新增用户成功') finally: base.driver.quit()
def deleteReimbuisement(): """删除报销单""" try: base = Base() base.open(page.reimbursementExpenseListPage, reimbuisementPage.searchMould['tr_reimbuisement'], havaFrame=False) #配置文件读取报销单信息 expenseNum = get_conf('houseInfo', 'apartmentReimbursementNum') sql = "SELECT * from reimbursement_expense where expense_num = '%s' and deleted = 0" % expenseNum.encode( 'utf-8') consoleLog(u'查询是否存在测试房源的报销单') if sqlbase.get_count(sql) > 0: base.input_text(reimbuisementPage.searchMould['expenseNum_loc'], expenseNum) else: sql = "SELECT rr.expense_num from reimbursement_expense rr INNER JOIN house hh on rr.house_id = hh.house_id where hh.city_code = 330100 " \ "and rr.deleted = 0 limit 1" consoleLog(u'未找到测试房源的报销单,随机查找报销单做删除操作') if sqlbase.get_count(sql) > 0: expenseNum = sqlbase.serach(sql)[0] base.input_text( reimbuisementPage.searchMould['expenseNum_loc'], expenseNum) else: consoleLog(u'未找到符合条件的报销单,跳过删除用例') return base.click(reimbuisementPage.searchMould['search_button']) base.staleness_of(reimbuisementPage.searchMould['tr_reimbuisement']) base.click(reimbuisementPage.editMould['reset_button']) base.click(reimbuisementPage.editMould['alert_confirm']) base.check_submit() base.dblclick(reimbuisementPage.searchMould['tr_reimbuisement']) base.click(reimbuisementPage.editMould['fanshen_loc']) base.input_text(reimbuisementPage.editMould['audit_content'], 'AutoTest') base.click(reimbuisementPage.editMould['audit_confirm']) base.check_submit() base.click(reimbuisementPage.editMould['delete_button']) base.click(reimbuisementPage.editMould['alert_confirm']) consoleLog(u'报销单 %s 删除成功' % expenseNum) finally: base.driver.quit()
def auditApartmentContract(): """审核出租合同终止结算""" try: base=Base() base.open(page.contractEndPage, apartmentContractEndPage.searchMould['tr_contract_end'], havaFrame=False) #配置文件读取出租合同终止结算信息 contractNum = get_conf('apartmentContractInfo', 'contractnum') sql = "SELECT * from apartment_contract where contract_num = '%s' and deleted = 0 and contract_status != 'EFFECTIVE'" % contractNum.encode( 'utf-8') if sqlbase.get_count(sql) > 0: base.input_text(apartmentContractEndPage.searchMould['contract_num_loc'], contractNum) else: sql = "SELECT contract_num from apartment_contract act inner join apartment_contract_end ace on act.contract_id = ace.contract_id where ace.deleted = 0 " \ "and act.city_code = 330100 and ace.audit_status = 'NO_AUDIT' and act.contract_type = 'NEWSIGN' and act.entrust_type = 'SHARE' limit 1" if sqlbase.get_count(sql) > 0: contractNum = sqlbase.serach(sql)[0] consoleLog(u'未找到测试合同,随机使用合同 %s 做审核终止结算用例' % contractNum, level='w') base.input_text(apartmentContractEndPage.searchMould['contract_num_loc'], contractNum) set_conf('apartmentContractInfo', contractnum=contractNum) else: consoleLog(u'未找到符合条件的可以做终止的出租合同,跳过出租合同终止步骤', level='w') return base.click(apartmentContractEndPage.searchMould['search_button_loc']) base.staleness_of(apartmentContractEndPage.searchMould['tr_contract_end']) base.dblclick(apartmentContractEndPage.searchMould['tr_contract_end']) # 驳回 base.click(apartmentContractEndPage.addContractEndMould['bohui_loc']) base.input_text(apartmentContractEndPage.addContractEndMould['contract_audit_content'], u'自动化测试审核数据') base.click(apartmentContractEndPage.addContractEndMould['contract_audit_confirm']) base.staleness_of(apartmentContractEndPage.searchMould['tr_contract_end']) # 初审 base.dblclick(apartmentContractEndPage.searchMould['tr_contract_end']) base.click(apartmentContractEndPage.addContractEndMould['chushen_loc']) base.click(apartmentContractEndPage.addContractEndMould['contract_audit_confirm']) base.staleness_of(apartmentContractEndPage.searchMould['tr_contract_end']) base.dblclick(apartmentContractEndPage.searchMould['tr_contract_end']) # 复审 base.click(apartmentContractEndPage.addContractEndMould['fushen_loc']) base.click(apartmentContractEndPage.addContractEndMould['contract_audit_confirm']) consoleLog(u'出租合同 %s 终止结算审核成功' % contractNum) finally: base.driver.quit()
def designSharehouse(): """品牌合租公寓设计装修""" def common(): #分割户型 base.click(designSharePage.designShareMould['add_house_btn']) base.script("$('#rooms').numberspinner('setValue',2)") #设置户型为2居室 base.click(designSharePage.designShareMould['add_house_btn']) base.type_select(designSharePage.typeMould['fitment_style'], 'SIMPLECHINESE') base.script( "$('[onclick=\"ShareWorkBlank.selectAll(this);\"]').click()") base.type_select(designSharePage.typeMould['room1_no'], 'METH') base.input_text(designSharePage.designShareMould['room_area'], '50', index=0) base.type_select(designSharePage.typeMould['room1_orientation'], 'NORTH') base.type_select(designSharePage.typeMould['room2_no'], 'ETH') base.input_text(designSharePage.designShareMould['room_area'], '20', index=1) base.type_select(designSharePage.typeMould['room2_orientation'], 'EAST') base.click(designSharePage.designShareMould['save_btn']) base.check_submit() #派单 base.context_click(designSharePage.searchMould['tr_contract']) base.click(designSharePage.designShareMould['design_btn_1'], index=0) base.wait_element(designSharePage.designShareMould['save_btn_1']) user = "******" \ "AND sp.position_name LIKE '%品牌公寓专员%' LIMIT 1" base.type_select(designSharePage.typeMould['fitment_uid'], sqlbase.serach(user)[0]) time.sleep(1) base.click(designSharePage.designShareMould['save_btn_1']) base.check_submit() #交房 base.context_click(designSharePage.searchMould['tr_contract']) base.click(designSharePage.designShareMould['design_btn_2'], index=0) base.input_text(designSharePage.designShareMould['total_cost'], '5000.00') base.type_date(designSharePage.typeMould['decorate_start_date'], '2017-01-01') base.type_date(designSharePage.typeMould['hard_delivery_date'], '2017-01-15') base.type_date(designSharePage.typeMould['set_delivery_date'], '2017-01-20') base.click(designSharePage.designShareMould['save_btn_2']) base.check_submit() Base.succeed += 1 sql = "SELECT hh.house_code, hh.house_id, aa.apartment_code, aa.apartment_id FROM house_contract hc INNER JOIN apartment aa ON hc.contract_id = aa.house_contract_id " \ "INNER JOIN house hh ON hh.house_id = hc.house_id WHERE hc.contract_num = '%s' LIMIT 1" % base.contractNum.encode('utf-8') info = sqlbase.serach(sql) set_conf('houseInfo', houseCode=info[0], houseID=info[1], apartmentCode=info[2], apatmentID=info[3]) consoleLog(u'委托合同 %s 设计装修成功' % base.contractNum) try: base.solr('apartment', get_conf('testCondition', 'test')) consoleLog(u'apartment-core增量成功') except: consoleLog(Exception.message, level='e') consoleLog(u'执行solr增量出现问题,请查看solr是否正常', level='e') try: base = Base() base.open(page.designSharePage, designSharePage.searchMould['tr_contract'], havaFrame=False) # 配置文件读取委托合同信息 contractNum = get_conf('houseContractInfo', 'contractNum') consoleLog(u'查询委托合同 %s 是否已操作过设计工程' % contractNum) sql1 = "select * from house_contract where contract_num = '%s' and deleted = 0" % contractNum.encode( 'utf-8') sql2 = "select * from house_contract hc INNER JOIN fitment_house fh on hc.contract_id = fh.contract_id where hc.contract_num = '%s' and hc.deleted = 0" % contractNum.encode( 'utf-8') if sqlbase.get_count(sql1) > 0 and sqlbase.get_count(sql2) is 0: base.input_text(designSharePage.searchMould['contract_num_loc'], contractNum) base.click(designSharePage.searchMould['search_btn_loc']) base.staleness_of(designSharePage.searchMould['tr_contract']) base.context_click(designSharePage.searchMould['tr_contract']) base.click(designSharePage.designShareMould['design_btn'], index=0) base.common() else: consoleLog(u'未找到委托合同 %s ,随机查询待设计的委托合同' % contractNum, level='w') sql = "SELECT hc.contract_num FROM house_contract hc WHERE hc.deleted = 0 AND hc.city_code = 330100 AND hc.contract_status = 'EFFECTIVE' " \ "AND hc.apartment_type = 'BRAND' AND hc.entrust_type = 'SHARE' AND NOT EXISTS ( SELECT 1 FROM fitment_house fh WHERE " \ "fh.contract_id = hc.contract_id ) ORDER BY RAND() LIMIT 1" if sqlbase.get_count(sql) != 0: base.contractNum = sqlbase.serach(sql, False)[0] base.input_text( designSharePage.searchMould['contract_num_loc'], contractNum) base.click(designSharePage.searchMould['search_btn_loc']) base.staleness_of(designSharePage.searchMould['tr_contract']) base.context_click(designSharePage.searchMould['tr_contract']) base.click(designSharePage.designShareMould['design_btn'], index=0) base.common() else: consoleLog(u'未找到待设计的品牌合租委托合同,跳过设计分割用例', level='e') return finally: base.driver.quit()
def addHouse(): """新增房源""" def common(testData): """详细信息""" user = sqlbase.serach( "select user_id,dep_id from sys_user WHERE user_phone = '15168368432' and user_status = 'INCUMBENCY' limit 1" ) #拓房人信息 base.type_combotree(houseAddPage.typeMould['did'], user[1]) base.type_select(houseAddPage.typeMould['uid'], user[0]) # 出租信息 base.type_click(houseAddPage.typeMould['house_status']) base.type_select(houseAddPage.typeMould['source'], 'INTRODUCE') base.input_text(houseAddPage.houseAddMould['rental_price'], 3000) #详细信息 base.type_select(houseAddPage.typeMould['rooms'], '1') base.type_select(houseAddPage.typeMould['livings'], '1') base.type_select(houseAddPage.typeMould['kitchens'], '1') base.type_select(houseAddPage.typeMould['bathrooms'], '1') base.type_select(houseAddPage.typeMould['balconys'], '1') base.input_text(houseAddPage.houseAddMould['build_area'], '60.00') # 面积 base.type_select(houseAddPage.typeMould['orientation'], 'NORTH') base.type_select(houseAddPage.typeMould['property_type'], 'MULTI_LIFE') base.type_select(houseAddPage.typeMould['property_use'], 'HOUSE') base.type_select(houseAddPage.typeMould['fitment_type'], 'FITMENT_ROUGH') base.type_select(houseAddPage.typeMould['remark'], u'Atuo备注信息') base.type_select(houseAddPage.typeMould['look_type'], 'DIRECTION') base.type_select(houseAddPage.typeMould['look_date'], u'2017-09-06') base.click(houseAddPage.houseAddMould['form_btn']) # 保存 if testData: consoleLog(u'测试数据房源新增成功') else: consoleLog( u'随机数据房源新增成功,物业地址为:%s%s%s%s' % (base.house[0], base.house[1], base.house[2], base.house[3]), level='w') set_conf('residential', residentialName=base.house[0], buildingName=base.house[1], unitName=base.house[2], housenoname=base.house[3], residentialid=base.house[4], buildingid=base.house[5], unitid=base.house[6], housenoid=base.house[7]) try: base = Base() base.open(page.houseAddPage, houseAddPage.houseAddMould['test'], havaFrame=False) sqltHouse = "SELECT * from residential where residential_name = '%s' and deleted = 0" % get_conf( 'residential', 'residentialname').encode('utf-8') #获取配置文件中的房源 if sqlbase.get_count(sqltHouse) != 0: # 基本信息 base.input_text(houseAddPage.houseAddMould['property_name'], get_conf('residential', 'residentialname')[:-1]) base.click(houseAddPage.houseAddMould['property_name_click']) base.input_text(houseAddPage.houseAddMould['contact_people'], 'AutoTest') base.input_text(houseAddPage.houseAddMould['building_name_search'], get_conf('residential', 'buildingname')[:-1]) base.click(houseAddPage.houseAddMould['buidlding_click']) if get_conf('testCondition', 'test') == 'test': base.click(houseAddPage.houseAddMould['add_contact_btn']) base.input_text(houseAddPage.houseAddMould['contact_tel2'], '18279881085') base.click(houseAddPage.houseAddMould['save_contact_btn']) elif get_conf('testCondition', 'test') == 'mock': base.input_text(houseAddPage.houseAddMould['contact_tel1'], '18279881085') base.input_text(houseAddPage.houseAddMould['unit_search'], get_conf('residential', 'unitname')[:-1]) base.script("$('[style=\"display: block;\"]')[1].click()") base.input_text(houseAddPage.houseAddMould['contact_people'], 'AutoTest') base.input_text(houseAddPage.houseAddMould['house_no_search'], get_conf('residential', 'housenoname')) base.script("$('[style=\"display: block;\"]')[2].click()") base.input_text(houseAddPage.houseAddMould['contact_people'], 'AutoTest') common(True) else: #如果配置文件中没有房源就从数据库提取符合条件的房源数据 sql_house_info = "SELECT rr.residential_name, rb.building_name, rbu.unit_name, rbhn.house_no, rr.residential_id, rb.building_id, rbu.unit_id, rbhn.house_no_id " \ "FROM residential rr INNER JOIN residential_building rb ON rr.residential_id = rb.residential_id INNER JOIN residential_building_unit rbu ON rb.building_id" \ " = rbu.building_id INNER JOIN residential_building_house_no rbhn ON rbhn.building_id = rbu.building_id WHERE rr.deleted = 0 AND rr.city_code = '330100' " \ "AND NOT EXISTS ( SELECT 1 FROM house_develop hdd WHERE hdd.city_code = '330100' AND hdd.house_no_id = rbhn.house_no_id ) LIMIT 1" house_info = sqlbase.serach(sql_house_info, False) base.house = house_info base.input_text(houseAddPage.houseAddMould['property_name'], house_info[0][:-1]) base.click(houseAddPage.houseAddMould['property_name_click']) base.input_text(houseAddPage.houseAddMould['contact_people'], 'AutoTest') base.input_text(houseAddPage.houseAddMould['building_name_search'], house_info[1][:-1]) base.click(houseAddPage.houseAddMould['buidlding_click']) if get_conf('testCondition', 'test') == 'test': base.click(houseAddPage.houseAddMould['add_contact_btn']) base.input_text(houseAddPage.houseAddMould['contact_tel2'], '18279881085') base.click(houseAddPage.houseAddMould['save_contact_btn']) elif get_conf('testCondition', 'test') == 'mock': base.input_text(houseAddPage.houseAddMould['contact_tel1'], '18279881085') base.input_text(houseAddPage.houseAddMould['unit_search'], house_info[2][:-1]) base.script("$('[style=\"display: block;\"]')[1].click()") base.input_text(houseAddPage.houseAddMould['contact_people'], 'AutoTest') base.input_text(houseAddPage.houseAddMould['house_no_search'], house_info[3]) base.script("$('[style=\"display: block;\"]')[2].click()") base.input_text(houseAddPage.houseAddMould['contact_people'], 'AutoTest') common(False) finally: base.driver.quit()
def auditHouseContractEnd(): """审核委托合同终止结算""" try: base = Base() base.open( page.contractEndPage, houseContractEndPage.searchMould['contract_search_button_loc'], havaFrame=False) base.click(houseContractEndPage.addContractEndMould['tab_info'], index=1) #配置文件读取待审核的委托合终止结算 contractNum = get_conf('houseContractInfo', 'contractnum') consoleLog(u'查询委托合同 %s 是否存在终止结算' % contractNum) sql = "SELECT * from house_contract where contract_num = '%s' and deleted = 0 and audit_status = 'APPROVED' and contract_status != 'EFFECTIVE'" % contractNum.encode( 'utf-8') if sqlbase.get_count(sql) > 0: base.input_text( houseContractEndPage.searchMould['end_contract_num_loc'], contractNum) else: base.type_select( houseContractEndPage.typeMould['end_audit_status'], 'NO_AUDIT') base.click( houseContractEndPage.searchMould['end_search_button_loc']) base.staleness_of( houseContractEndPage.searchMould['tr_contract_end']) contractNum = base.script( "var a = $('#ContractReceivable_table_wt > div:nth-child(1) > div:nth-child(2) > div.datagrid-view > div.datagrid-view2 > div.datagrid-body > table > tbody > tr:nth-child(1) > td[field=\"contract_num\"] > div').text();return a", True).decode('utf-8') base.click(houseContractEndPage.searchMould['end_reset_btn']) base.staleness_of( houseContractEndPage.searchMould['tr_contract_end']) base.input_text( houseContractEndPage.searchMould['end_contract_num_loc'], contractNum) base.click(houseContractEndPage.searchMould['end_search_button_loc']) base.staleness_of(houseContractEndPage.searchMould['tr_contract_end']) base.dblclick( houseContractEndPage.searchMould['tr_contract_end'], checkLoc=houseContractEndPage.addContractEndMould['check_loc']) #驳回 base.click(houseContractEndPage.addContractEndMould['bohui_loc']) base.input_text( houseContractEndPage.addContractEndMould['contract_audit_content'], u'自动化测试审核数据') base.click( houseContractEndPage.addContractEndMould['contract_audit_confirm']) base.check_submit() base.dblclick( houseContractEndPage.searchMould['tr_contract_end'], checkLoc=houseContractEndPage.addContractEndMould['check_loc']) #初审 base.click(houseContractEndPage.addContractEndMould['chushen_loc']) base.click( houseContractEndPage.addContractEndMould['contract_audit_confirm']) base.check_submit() base.dblclick( houseContractEndPage.searchMould['tr_contract_end'], checkLoc=houseContractEndPage.addContractEndMould['check_loc']) # 复审 base.click(houseContractEndPage.addContractEndMould['fushen_loc']) base.click( houseContractEndPage.addContractEndMould['contract_audit_confirm']) consoleLog(u'委托合同 %s终止结算审核成功' % contractNum) finally: base.driver.quit()
def addCustomer(): """新增租前客户信息""" try: base = Base() base.open(page.customerListPage, customerPage.listMould['add_customer_loc'], havaFrame=False) base.click(customerPage.listMould['add_customer_loc']) customerName = 'AutoTest' + '-' + time.strftime('%m%d-%H%M%S') base.input_text(customerPage.addCustomerMould['customer_name_loc'], customerName) prelist = [ "130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "147", "150", "151", "152", "153", "155", "156", "157", "158", "159", "186", "187", "188" ] phone = random.choice(prelist) + "".join( random.choice("0123456789") for i in range(8)) base.input_text(customerPage.addCustomerMould['customer_phone_loc'], phone) base.click(customerPage.addCustomerMould['customer_gender_loc'], index=1) base.click(customerPage.addCustomerMould['customer_marriage_loc'], index=1) base.input_text(customerPage.addCustomerMould['customer_email_loc'], '*****@*****.**') base.input_text(customerPage.addCustomerMould['customer_wechat_loc'], 'AutoTest') base.type_select(customerPage.typeMould['constellation'], 'VIRGO') base.type_select(customerPage.typeMould['education'], 'BACHELOR') base.type_select(customerPage.typeMould['customer_from'], 'LOCAL58') # 求租需求 base.type_select(customerPage.typeMould['rent_class'], 'CLASSA') # 求租等级-A级 base.type_select(customerPage.typeMould['rent_type'], 'GATHERHOUSE') # 求租类型-不限 base.type_select(customerPage.typeMould['rent_use'], 'RESIDENCE') # 求租用途-住宅 base.type_select(customerPage.typeMould['rent_fitment'], 'FITMENT_ROUGH') # 装修情况-毛坯 base.type_select(customerPage.typeMould['rent_area_code'], '330108') # 求租城区-滨江 base.type_select(customerPage.typeMould['rent_business_circle'], '4') # 求租商圈-浦沿 base.input_text(customerPage.addCustomerMould['rent_price_min_loc'], '1111') base.input_text(customerPage.addCustomerMould['rent_price_max_loc'], '2222') base.type_date(customerPage.typeMould['rent_date'], '2017-02-02') base.input_text(customerPage.addCustomerMould['rent_people_loc'], '3') base.input_text(customerPage.addCustomerMould['area_loc'], '88.88') base.input_text(customerPage.addCustomerMould['rent_other'], u'浙江省杭州市滨江区六和路368号海创基地南楼3E') base.click(customerPage.addCustomerMould['submit_loc']) base.check_submit() consoleLog(u'新增租客 %s 成功' % customerName) #将新增租客信息写入配置文件中 set_conf('customerInfo', customerName=customerName) sql = "SELECT customer_id from customer where customer_name = '%s' and deleted = 0" % customerName.encode( 'utf-8') set_conf('customerInfo', customerID=sqlbase.serach(sql)[0]) finally: base.driver.quit()
def addHouserent(): """自营房源 房源定价""" try: base = Base() base.open(page.apartmentPage, apartmentPage.apartmentMould['tr_apartment']) #配置文件读取房源信息 houseCode = get_conf('houseInfo', 'houseCode') consoleLog(u'确认测试房源 %s 是否被定价' % houseCode) sql = "SELECT * from apartment where apartment_code like '%s%%' and (rent_price = 0 or rent_price is null) and deleted = 0 and is_active = 'Y' and rent_status = 'WAITING_RENT'" % houseCode.encode( 'utf-8') if sqlbase.get_count(sql) > 0: base.input_text(apartmentPage.apartmentMould['residential_name'], houseCode) for i in range(5): base.click(apartmentPage.apartmentMould['search_btn']) time.sleep(1) try: test = base.driver.find_element( *apartmentPage.apartmentMould['tr_house']) break except NoSuchElementException: consoleLog(u'尝试第%s次查找,但未找到apartment-core的solr增量数据' % int(i + 1), level='w') time.sleep(5) base.dblclick(apartmentPage.apartmentMould['tr_apartment'], checkLoc=base.apartmentMould['make_price_btn']) base.click(apartmentPage.apartmentMould['make_price_btn']) base.input_text(apartmentPage.apartmentMould['share_rent_price'], 2222, index=0) base.input_text(apartmentPage.apartmentMould['share_rent_price'], 1111, index=1) base.click(apartmentPage.apartmentMould['save_btn']) base.click(apartmentPage.apartmentMould['form_btn']) consoleLog(u'新增自营房源月租金成功') else: consoleLog(u'测试房源未找到,随机查找一条未被定价的公寓') sql = "SELECT aa.apartment_code,aa.apartment_id FROM apartment aa INNER JOIN house_contract hc ON aa.house_contract_id = hc.contract_id WHERE aa.rent_status = 'WAITING_RENT' " \ "AND aa.is_active = 'Y' AND aa.city_code = '330100' AND aa.rent_price is null AND hc.deleted = 0 AND hc.contract_status = 'EFFECTIVE' " \ "AND hc.entrust_type = 'SHARE' ORDER BY RAND() LIMIT 1" #查询合租房源 if sqlbase.get_count(sql) != 0: apartmentCode = sqlbase.serach(sql)[0] sql = "SELECT fh.rooms from apartment aa INNER JOIN house_contract hc on aa.house_contract_id = hc.contract_id INNER JOIN fitment_house fh on fh.contract_id = hc.contract_id where aa.apartment_code = '%s'" % apartmentCode consoleLog(u'确认随机房源的公寓数量') apartmentCount = sqlbase.serach(sql)[0] base.input_text( apartmentPage.apartmentMould['residential_name'], apartmentCode) base.click(apartmentPage.apartmentMould['search_btn']) base.staleness_of(apartmentPage.apartmentMould['tr_house']) base.dblclick(apartmentPage.apartmentMould['tr_apartment'], checkLoc=base.apartmentMould['make_price_btn']) base.click(apartmentPage.apartmentMould['make_price_btn']) if apartmentCount > 1: for i in range(apartmentCount): base.input_text( apartmentPage.apartmentMould['share_rent_price'], 2222, index=i) base.click(apartmentPage.apartmentMould['save_btn']) # base.click(base.apartmentMould['form_btn']) consoleLog(u'新增随机自营房源 %s 月租金成功' % apartmentCode, level='w') houseContractInfo = "SELECT contract_num,contract_id from house_contract hc INNER JOIN apartment aa on hc.contract_id = aa.house_contract_id " \ "where aa.apartment_code = '%s' and hc.deleted = 0 ORDER BY hc.create_time desc LIMIT 1" % apartmentCode # 写入配置文件 set_conf('houseInfo', apartmentCode=apartmentCode, apatmentID=sqlbase.serach(sql)[1]) set_conf('houseContractInfo', contractnum=sqlbase.serach(houseContractInfo)[0], contractid=sqlbase.serach(houseContractInfo)[1]) else: consoleLog(u'未找到未被定价的合租房源,略过定价', level='w') finally: base.driver.quit()
def addResidential(): """新增楼盘""" try: mybase = Base() mybase.open(page.residentiaPage, residentiaPage.searchResidentialModule['search_btn'], havaFrame=False) # # url = 'http://isz.ishangzu.com/isz_house/ResidentialController/searchResidentialList.action' # data = {"city_code":"330100","residential_name":"AutoTest","pageNumber":1,"pageSize":30,"sort":"t.create_time","order":"desc"} # if request(url,data=data) >= 1: # consoleLog('已有测试楼盘 AutoTest,跳过新增',level='w') # 楼盘地址 residentialName = 'AutoTest' + '-' + time.strftime( '%m%d-%H%M%S') #定义楼盘名称 mybase.click(residentiaPage.addResidentialMould['add_btn']) #新增 mybase.input_text( residentiaPage.addResidentialMould['residential_name'], residentialName) #楼盘名称 mybase.click( residentiaPage.addResidentialMould['residential_jianpin']) #简拼 mybase.click(residentiaPage.addResidentialMould['byname_btn']) #楼盘别买添加 mybase.input_text(residentiaPage.addResidentialMould['byname'], 'auto') #楼盘别名 mybase.click( residentiaPage.addResidentialMould['save_button_btn']) #别名保存 mybase.type_select(residentiaPage.typeMould['area_code'], "330102") # 城区:上城区 mybase.type_select(residentiaPage.typeMould['business_circle_name'], "35") #商圈:四季青 mybase.input_text(residentiaPage.addResidentialMould['address'], u'自动化测试街道地址') #街道 mybase.click( residentiaPage.addResidentialMould['get_location_btn']) #获取经纬 mybase.input_text(residentiaPage.addResidentialMould['search_address'], u'海创基地') #地址关键字 mybase.click(residentiaPage.addResidentialMould['search_map_btn']) #查询 mybase.click( residentiaPage.addResidentialMould['search_address']) #点击输入框 mybase.click(residentiaPage.addResidentialMould['map_point']) # mybase.click( residentiaPage.addResidentialMould['save_location_btn']) #保存 # 基础信息 mybase.type_select(residentiaPage.typeMould['property_type'], 'ordinary') # sql = "SELECT sd.parent_id from sys_department sd INNER JOIN sys_user sur on sur.dep_id = sd.dep_id INNER JOIN sys_position spt on spt.position_id = sur.position_id " \ "where sd.dep_district = '330100' and sd.dep_id <> '00000000000000000000000000000000' and (spt.position_name like '资产管家%' or spt.position_name like '综合管家%') ORDER BY RAND() LIMIT 1" mybase.type_combotree(residentiaPage.typeMould['department_loc'], sqlbase.serach(sql)[0]) # mybase.input_text(residentiaPage.addResidentialMould['build_date'], 1988) # mybase.input_text( residentiaPage.addResidentialMould['totle_buildings'], 10) # mybase.input_text( residentiaPage.addResidentialMould['total_unit_count'], 30) # mybase.input_text( residentiaPage.addResidentialMould['total_house_count'], 20) # mybase.input_text(residentiaPage.addResidentialMould['build_area'], 400) # mybase.input_text( residentiaPage.addResidentialMould['property_company'], u'杭州爱上租物业有限公司') # mybase.input_text(residentiaPage.addResidentialMould['property_fee'], 2) # mybase.input_text(residentiaPage.addResidentialMould['plot_ratio'], 80) # mybase.input_text(residentiaPage.addResidentialMould['green_rate'], 20) # mybase.input_text(residentiaPage.addResidentialMould['parking_amount'], 200) # mybase.input_text(residentiaPage.addResidentialMould['other_info'], u'临近公交地铁,附近有超市,环境优美') # # 周边配套,图片 mybase.input_text(residentiaPage.addResidentialMould['bus_stations'], u'六合桥') # mybase.input_text(residentiaPage.addResidentialMould['metro_stations'], u'滨江站') # # 提交新增楼盘字典 mybase.click(residentiaPage.addResidentialMould['submit_btn']) # mybase.check_submit() consoleLog(u'楼盘 %s 新增成功' % residentialName) # # 栋座 mybase.input_text( residentiaPage.searchResidentialModule['residential_name'], residentialName) # mybase.click(residentiaPage.searchResidentialModule['search_btn']) # mybase.staleness_of( residentiaPage.searchResidentialModule['tr_residential']) # mybase.click( residentiaPage.addResidentialMould['building_info_btn']) # mybase.click(residentiaPage.addResidentialMould['add_building_btn']) # mybase.input_text(residentiaPage.addResidentialMould['building_name'], 'Building') # mybase.click(residentiaPage.addResidentialMould['lng_lat_btn']) # mybase.input_text( residentiaPage.addResidentialMould['input_searchMap'], u'逸天广场') # mybase.click(residentiaPage.addResidentialMould['input_searchMap']) # mybase.click(residentiaPage.addResidentialMould['searchMap_btn']) # mybase.click(residentiaPage.addResidentialMould['save_lng_lat_btn']) # mybase.type_select(residentiaPage.typeMould['property_use'], 'ordinary') # mybase.type_select(residentiaPage.addResidentialMould['ground_floors'], 10) # mybase.type_select( residentiaPage.addResidentialMould['underground_floors'], 2) # mybase.type_select(residentiaPage.addResidentialMould['ladder_count'], 30) # mybase.type_select(residentiaPage.addResidentialMould['house_count'], 100) # mybase.click( residentiaPage.addResidentialMould['save_unitname_btn']) # # 单元 mybase.click(residentiaPage.addResidentialMould['unit_info_btn']) # mybase.click(residentiaPage.addResidentialMould['add_unit_btn ']) # mybase.input_text(residentiaPage.addResidentialMould['unit_name'], 'Unit') # mybase.click( residentiaPage.addResidentialMould['save_unitname_btn']) # # 楼层 mybase.click(residentiaPage.addResidentialMould['floor_info_btn']) # mybase.click(residentiaPage.addResidentialMould['add_floor_btn']) # mybase.input_text(residentiaPage.addResidentialMould['floor_name'], 'Floor') # mybase.click( residentiaPage.addResidentialMould['save_unitname_btn']) # # 房号 mybase.click(residentiaPage.addResidentialMould['house_info_btn']) # mybase.click(residentiaPage.addResidentialMould['add_house_btn']) # mybase.input_text(residentiaPage.addResidentialMould['house_no'], 'Houseno') mybase.click( residentiaPage.addResidentialMould['save_unitname_btn']) # consoleLog(u'栋座相关新增成功') finally: mybase.driver.quit()
def addApartmentContract(): """新增出租合同终止结算""" try: base = Base() base.open(page.apartmentContractPage, apartmentContractEndPage.addContractEndMould['tr_contract'], havaFrame=False) #配置文件读取合同信息 contractNum = get_conf('apartmentContractInfo', 'contractnum') endDate = None sql = "SELECT rent_end_date from apartment_contract where contract_num = '%s' and deleted = 0" % contractNum.encode( 'utf-8') if sqlbase.get_count(sql) > 0: base.input_text( apartmentContractEndPage. addContractEndMould['contract_num_loc'], contractNum) endDate = sqlbase.serach(sql)[0] else: sql = "SELECT contract_num,rent_end_date from apartment_contract where deleted = 0 and city_code = 330100 and audit_status = 'APPROVED' and contract_status = 'EFFECTIVE' " \ "and contract_type = 'NEWSIGN' and entrust_type = 'SHARE' limit 1" if sqlbase.get_count(sql) > 0: info = sqlbase.serach(sql) contractNum = info[0] endDate = info[1] consoleLog(u'未找到测试合同,随机使用合同 %s 做新增终止结算用例' % contractNum, level='w') base.input_text( apartmentContractEndPage. addContractEndMould['contract_num_loc'], contractNum) set_conf('apartmentContractInfo', contractnum=contractNum) else: consoleLog(u'未找到符合条件的可以做终止的出租合同,跳过出租合同终止步骤', level='w') return base.click( apartmentContractEndPage.addContractEndMould['search_button_loc']) base.staleness_of( apartmentContractEndPage.addContractEndMould['tr_contract']) base.context_click( apartmentContractEndPage.addContractEndMould['tr_contract']) base.click( apartmentContractEndPage.addContractEndMould['end_button_loc'], index=1) base.click(apartmentContractEndPage.addContractEndMould['now_end_loc']) base.input_text( apartmentContractEndPage.addContractEndMould['receipt_num_loc'], 'AutoTest') base.type_date(apartmentContractEndPage.typeMould['end_date'], endDate) base.input_text( apartmentContractEndPage.addContractEndMould['end_reason_loc'], u'承租周期已完') base.type_select(apartmentContractEndPage.typeMould['end_type'], 'RETREATING') # 正退 base.type_select( apartmentContractEndPage.typeMould['receipt_type_loc'], 'PAYER') # 承租人 base.input_text( apartmentContractEndPage.addContractEndMould['bank_loc'], u'中国银行') base.dblclick( apartmentContractEndPage.addContractEndMould['weiyuejin_loc'], index=12) base.input_text( apartmentContractEndPage. addContractEndMould['receivable_money_loc'], '888.88') base.input_text( apartmentContractEndPage.addContractEndMould['payable_money_loc'], '666.66') base.input_text( apartmentContractEndPage.addContractEndMould['remark_loc'], 'AutoTest') # base.click(base.addContractEndMould['submit_loc']) #不知道这步为什么会报错,改用js执行 base.script('$("#form_submit_btn").click()') base.check_submit() consoleLog(u'出租合同 %s 终止结算新增成功' % contractNum) finally: base.driver.quit()
def addApartmentContract(): """新增出租合同""" try: base = Base() base.open(page.customerListPage, apartmentContractPage.customerSignMould['tr_customer'], havaFrame=False) #配置文件读取租客信息 customerName = get_conf('customerInfo', 'customerName') contractNum = 'AutoTest' + '-' + time.strftime('%m%d-%H%M%S') testCustomer = "SELECT * from customer where customer_name = '%s' and deleted = 0" % customerName.encode( 'utf-8') if sqlbase.get_count(testCustomer) != 0: try: base.input_text(apartmentContractPage. customerSignMould['search_customer_name_loc'], customerName) #输入租客姓名 except: base.click( (By.CSS_SELECTOR, '.panel.window > div:nth-child(1) > div.panel-tool > a' )) # 可能会有分配租客的弹窗出现,此为关闭 base.input_text(apartmentContractPage. customerSignMould['search_customer_name_loc'], customerName) #输入租客姓名 else: try: base.click( (By.CSS_SELECTOR, '.panel.window > div:nth-child(1) > div.panel-tool > a' )) # 可能会有分配租客的弹窗出现,此为关闭 except: pass customerCode = base.script( "var a = $('[datagrid-row-index=\"0\"] > [field=\"customer_num\"] > div > font').text();return a", True).decode('utf-8') consoleLog(u'使用随机租客 %s 签约承租合同' % customerCode, level='e') base.find_element( *apartmentContractPage. customerSignMould['search_customer_name_loc']).clear() base.click( apartmentContractPage.customerSignMould['search_button_loc']) #查询 base.staleness_of( apartmentContractPage.customerSignMould['tr_customer']) #等待数据刷新 base.script("$('button#edit_btn')[2].click()") # 点击列表页第一行的签约 # 此处为从配置文件中查询房源 apartmentCode = get_conf('houseInfo', 'apartmentCode') consoleLog(u'查询配置文件测试房源数据:%s' % apartmentCode) testApartment = "SELECT rent_type from apartment where apartment_code = '%s' and deleted = 0 and rent_status = 'WAITING_RENT' " \ "and is_active = 'Y' and rent_price > 0" % apartmentCode.encode('utf-8') if sqlbase.get_count(testApartment) != 0: consoleLog(u'查询配置文件测试房源对应委托合同的委托周期') testHouseContract = "SELECT entrust_start_date,entrust_end_date,date(sysdate()) from house_contract where contract_num = '%s'" % get_conf( 'houseContractInfo', 'contractNum').encode('utf-8') set_conf('apartmentContractInfo', signDate=sqlbase.serach(testHouseContract)[2], rentStartDate=sqlbase.serach(testHouseContract)[2], rentEndDate=sqlbase.serach(testHouseContract)[1]) if sqlbase.serach(testApartment)[0] == 'SHARE' or sqlbase.serach( testApartment)[0] == 'share': #查询结果为合租房源 base.click( apartmentContractPage.customerSignMould['share']) #点合租 base.input_text(apartmentContractPage. customerSignMould['search_apartment_loc'], apartmentCode) #房源编号 base.click(apartmentContractPage. customerSignMould['house_search_btn']) #搜索 else: base.input_text(apartmentContractPage. customerSignMould['search_apartment_loc'], apartmentCode) #不点合租直接输房源编号 base.click(apartmentContractPage. customerSignMould['house_search_btn']) #搜索 else: consoleLog(u'查询配置文件没有签约过承租合同的有效的合租房源') randomApartment = "SELECT a.apartment_code,a.apartment_id,hc.contract_num,hc.contract_id FROM apartment a INNER JOIN house_contract hc " \ "ON hc.contract_id = a.house_contract_id AND hc.is_active = 'Y' AND hc.deleted = 0 AND hc.contract_status = 'EFFECTIVE' WHERE a.deleted = 0 " \ "AND a.rent_price > 0 AND a.city_code = 330100 AND hc.entrust_type = 'SHARE' AND NOT EXISTS ( SELECT 1 FROM apartment_contract_relation " \ "WHERE room_id IS NOT NULL AND room_id = a.room_id ) AND NOT EXISTS ( SELECT 1 FROM apartment_contract_relation " \ "WHERE room_id IS NULL AND house_id = a.house_id ) ORDER BY RAND() LIMIT 1" info = sqlbase.serach(randomApartment) apartmentCode = info[0] consoleLog(u'使用随机房源 %s 签约承租合同' % apartmentCode, level='w') base.click(apartmentContractPage.customerSignMould['share']) #点合租 base.input_text(apartmentContractPage. customerSignMould['search_apartment_loc'], info[0]) #房源编号 base.click(apartmentContractPage. customerSignMould['house_search_btn']) #搜索 #将随机取得数据写入配置文件备用 set_conf('houseInfo', apartmentCode=info[0], apartmentID=info[1]) set_conf('houseContractInfo', contractnum=info[2], contractid=info[3]) consoleLog(u'查询随机房源 %s 对应委托合同的委托周期' % apartmentCode) randomHouseContract = sqlbase.serach( "SELECT entrust_start_date,entrust_end_date,date(sysdate()) from house_contract where contract_num = '%s'" % info[2].encode('utf-8')) # 将随机取得数据写入配置文件备用 set_conf('apartmentContractInfo', signDate=randomHouseContract[2], rentStartDate=randomHouseContract[2], rentEndDate=randomHouseContract[1]) base.staleness_of( apartmentContractPage.customerSignMould['apartment_loc']) base.dblclick(apartmentContractPage.customerSignMould['apartment_loc'], checkLoc=apartmentContractPage.addApartmentContractMould[ 'contract_num_loc']) # 对查询结果的第一条房源数据双击发起签约 base.input_text(apartmentContractPage. addApartmentContractMould['contract_num_loc'], contractNum) # 合同编号 #读取配置文件中预存的数据内容 signDate = get_conf('apartmentContractInfo', 'signDate') rentStartDate = get_conf('apartmentContractInfo', 'rentStartDate') rentEndDate = get_conf('apartmentContractInfo', 'rentEndDate') base.type_date(apartmentContractPage.typeMould['sign_date'], signDate) # 签约日期 base.type_date(apartmentContractPage.typeMould['rent_start_date'], rentStartDate) # 承租起算日 base.type_date(apartmentContractPage.typeMould['rent_end_date'], rentEndDate) # 承租到期日 base.input_text( apartmentContractPage.addApartmentContractMould['deposit_loc'], 1234) base.type_select(apartmentContractPage.typeMould['payment_type'], 'NORMAL') # 正常付款 base.type_select(apartmentContractPage.typeMould['payment_cycle'], 'TOW_MONTH') # 二月付 # base.input_text(ApartmentContractPage.addApartmentContractMould['rent_strategy_price_loc'],4321) #月租金:需求变更,单条情况下无需手动录入 # base.type_date(ApartmentContractPage.typeMould['rent_strategy_end_loc'],'2018-08-08') #租金策略结束日:不知道为什么自动化打开的DOM和正常情况下的DOM不一样,所以直接用jquery赋值 js = "$('#contract_strategy_table > table > tbody > tr > td:nth-child(8) > input').val('%s')" % rentEndDate base.script(js) base.click( apartmentContractPage. addApartmentContractMould['rent_strategy_contain_loc']) # 月租金包含按钮 base.type_select(apartmentContractPage.typeMould['contain_fee_type'], 'PARKING') # 包含车位费 base.input_text( apartmentContractPage.addApartmentContractMould['contain_fee_loc'], 123) # 车位费 base.click(apartmentContractPage. addApartmentContractMould['contain_fee_save_loc']) # 保存包含 base.input_text( apartmentContractPage.addApartmentContractMould['agent_fee_loc'], 234) # 中介服务费 base.input_text( apartmentContractPage.addApartmentContractMould['remark_loc'], 'this is autotest date') # 备注 base.click(apartmentContractPage. addApartmentContractMould['next_loc_1']) #第一页下一步 base.click(apartmentContractPage. addApartmentContractMould['next_loc_2']) #第二页下一步 # 租客详情 base.input_text( apartmentContractPage.addApartmentContractMould['sign_name_loc'], 'AutoTest') #签约人姓名 base.type_select(apartmentContractPage.typeMould['sign_id_type'], 'IDNO') #证件类型 base.input_text( apartmentContractPage.addApartmentContractMould['sign_id_no_loc'], '42062119910828541X') #身份证 base.input_text( apartmentContractPage.addApartmentContractMould['sign_phone_loc'], '15168368432') #手机号 base.input_text(apartmentContractPage. addApartmentContractMould['sign_address_loc'], u'浙江省杭州市滨江区六和路368号海创基地南楼三层') #地址 base.type_select(apartmentContractPage.typeMould['sign_is_customer'], 'Y') #为承租人 base.input_text(apartmentContractPage. addApartmentContractMould['urgent_customer_name_loc'], 'AutoTest') #紧急联系人 base.input_text(apartmentContractPage. addApartmentContractMould['urgent_phone_loc'], '13666666666') #紧急联系人号码 base.type_select(apartmentContractPage.typeMould['urgent_card_type'], 'IDNO') #紧急联系人证件类型 base.input_text(apartmentContractPage. addApartmentContractMould['urgent_id_card_loc'], '42062119910828541X') #紧急联系人证件号码 base.input_text(apartmentContractPage. addApartmentContractMould['urgent_postal_address_loc'], u'浙江省杭州市滨江区六和路368号海创基地南楼三层') #紧急联系人地址 base.type_select(apartmentContractPage.typeMould['customer_type'], 'EMPLOYEE') #租客类型 base.type_select(apartmentContractPage.typeMould['gender'], 'MALE') base.type_select(apartmentContractPage.typeMould['education'], 'BACHELOR') base.input_text( apartmentContractPage.addApartmentContractMould['trade_loc'], u'计算机软件') base.input_text( apartmentContractPage.addApartmentContractMould['email_loc'], '*****@*****.**') base.type_select(apartmentContractPage.typeMould['yesNo'], 'Y') base.click( apartmentContractPage.addApartmentContractMould['add_person_loc']) base.input_text( apartmentContractPage.addApartmentContractMould['person_name_loc'], 'test') base.type_select(apartmentContractPage.typeMould['cardType'], 'PASSPORT') base.input_text( apartmentContractPage. addApartmentContractMould['person_cardType_loc'], 'abcdefghijk') base.type_select(apartmentContractPage.typeMould['sex'], 'MALE') base.input_text( apartmentContractPage. addApartmentContractMould['person_phone_loc'], '13777777777') base.type_date(apartmentContractPage.typeMould['staydate'], '2017-08-08') base.click( apartmentContractPage.addApartmentContractMould['submit_loc']) base.check_submit() consoleLog(u'出租合同:%s 新增成功' % contractNum) sql = "select contract_id from apartment_contract where contract_num = '%s'" % contractNum set_conf('apartmentContractInfo', contractnum=contractNum, contractid=sqlbase.serach(sql)[0]) finally: base.driver.quit()
def auditApartmentContract(): """审核出租合同""" try: base = Base() base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract'], havaFrame=False) #配置文件读取待审核合同信息 contractNum = get_conf('apartmentContractInfo', 'contractnum') consoleLog(u'查询承租合同 %s 当前的审核状态' % contractNum) sql = "SELECT audit_status from apartment_contract where contract_num = '%s' and deleted = 0" % contractNum.encode( 'utf-8') if sqlbase.get_count(sql) > 0: if sqlbase.serach(sql)[0] == 'AUDIT': base.input_text( apartmentContractPage. searchContractMould['contract_num_loc'], contractNum) else: consoleLog(u'出租合同 %s 当前状态不是待审核,跳过审核用例' % contractNum, level='w') else: sql = "SELECT contract_num from apartment_contract where deleted = 0 and city_code = '330100' and contract_type = 'NEWSIGN' and audit_status = 'AUDIT' " \ "and contract_status = 'EFFECTIVE' and entrust_type = 'SHARE' limit 1" if sqlbase.get_count(sql) > 0: consoleLog(u'查询未审核的承租合同') contractNumNew = sqlbase.serach(sql)[0] consoleLog(u'未查询到出租合同 %s ,随机使用合同 %s 执行审核用例' % (contractNum, contractNumNew), level='w') contractNum = contractNumNew base.input_text( apartmentContractPage. searchContractMould['contract_num_loc'], contractNum) else: consoleLog(u'未查询到符合条件的承租合同,跳过审核用例', level='w') base.click( apartmentContractPage.searchContractMould['search_button_loc']) base.staleness_of( apartmentContractPage.searchContractMould['tr_contract']) base.dblclick(apartmentContractPage.searchContractMould['tr_contract']) # 打开详情页需要加载,但DOM其实已经加载完仍旧无法点击,此处加5秒等待 for i in range(5): try: base.click(apartmentContractPage. addApartmentContractMould['tab_info_loc'], index=4) break except: time.sleep(1) # 驳回 base.click( apartmentContractPage.addApartmentContractMould['bohui_loc']) base.input_text( apartmentContractPage. addApartmentContractMould['contract_audit_content'], u'自动化测试审核数据') base.click(apartmentContractPage. addApartmentContractMould['contract_audit_confirm']) base.staleness_of( apartmentContractPage.searchContractMould['tr_contract']) base.dblclick( apartmentContractPage.searchContractMould['tr_contract']) #双击第一条数据 for i in range(5): try: base.click(apartmentContractPage. addApartmentContractMould['tab_info_loc'], index=4) #点租客详情 break except: time.sleep(1) # 初审 base.click( apartmentContractPage.addApartmentContractMould['chushen_loc']) base.click(apartmentContractPage. addApartmentContractMould['contract_audit_confirm']) base.staleness_of( apartmentContractPage.searchContractMould['tr_contract']) base.dblclick(apartmentContractPage.searchContractMould['tr_contract']) for i in range(5): try: base.click(apartmentContractPage. addApartmentContractMould['tab_info_loc'], index=4) break except: time.sleep(1) # 复审 base.click( apartmentContractPage.addApartmentContractMould['fushen_loc']) base.click(apartmentContractPage. addApartmentContractMould['contract_audit_confirm']) base.check_submit() consoleLog(u'审核出租合同 %s 成功' % contractNum) #审核通过的合同编号写入配置文件 set_conf('apartmentContractInfo', contractnum=contractNum) finally: base.driver.quit()
def addContractEnd(): """新增委托合同终止结算""" try: base=Base() base.open(page.entrustContractPage, houseContractEndPage.addContractEndMould['tr_contract'], havaFrame=False) #配置文件读取将要终止的委托合同 contractNum = get_conf('houseContractInfo', 'contractnum') sql = "SELECT entrust_end_date from house_contract hc where hc.contract_num = '%s' and deleted = 0 and audit_status = 'APPROVED' and contract_status = 'EFFECTIVE'" % contractNum.encode('utf-8') if sqlbase.get_count(sql) > 0: base.input_text(houseContractEndPage.searchMould['contract_num_loc'], contractNum) endDate = sqlbase.serach(sql)[0] else: consoleLog(u'未找到或不满足新增终止条件的合同 %s,开始随机查找符合条件的委托合同' % contractNum, level='w') sql = "select house_contract.contract_num,house_contract.entrust_end_date from house_contract where house_contract.contract_id not in " \ "(select house_contract.contract_id from apartment ,apartment_contract ,house_contract where house_contract.contract_id=apartment.house_contract_id " \ "and apartment.house_id=apartment_contract.house_id and house_contract.deleted = 0 and house_contract.audit_status = 'APPROVED' and house_contract.contract_status = 'EFFECTIVE' " \ "and house_contract.city_code = 330100 and apartment_contract.real_due_date>NOW()) and contract_num<>'' limit 1" if sqlbase.get_count(sql) > 0: contractNum = sqlbase.serach(sql, needConvert=False)[0] consoleLog(u'随机对委托合同 %s 做新增终止结算操作' % contractNum, level='w') base.input_text(houseContractEndPage.searchMould['contract_num_loc'], contractNum) endDate = sqlbase.serach(sql)[1] else: consoleLog(u'未找到符合条件的委托合同,跳过终止结算用例') return base.click(houseContractEndPage.searchMould['contract_search_button_loc']) base.staleness_of(houseContractEndPage.addContractEndMould['tr_contract']) base.context_click(houseContractEndPage.addContractEndMould['tr_contract'])#右击第一条数据 base.click(houseContractEndPage.addContractEndMould['end_button_loc'], index=1) base.input_text(houseContractEndPage.addContractEndMould['penalty_loc'], 111) base.type_select(houseContractEndPage.typeMould['end_type'], 'RETREATING') # 结算类型-正退 base.type_date(houseContractEndPage.typeMould['end_date'], endDate) # 结算扣款 base.input_text(houseContractEndPage.addContractEndMould['penalty_remark_loc'], u'违约金陪入') base.input_text(houseContractEndPage.addContractEndMould['return_rent_loc'], 222) base.input_text(houseContractEndPage.addContractEndMould['return_rent_remark_loc'], u'返还房租') base.input_text(houseContractEndPage.addContractEndMould['no_charge_loc'], 333) base.input_text(houseContractEndPage.addContractEndMould['no_charge_remark_loc'], u'未扣款项') base.input_text(houseContractEndPage.addContractEndMould['fitment_charge_loc'], 444) base.input_text(houseContractEndPage.addContractEndMould['fitment_charge_remark_loc'], u'装修扣款') base.input_text(houseContractEndPage.addContractEndMould['other_loc'], 555) base.input_text(houseContractEndPage.addContractEndMould['other_remark_loc'], u'其他信息') # 代垫费用 base.click(houseContractEndPage.addContractEndMould['tool_bar'], index=0) base.type_select(houseContractEndPage.typeMould['return_type_loc'], 'LIQUIDATED') # 违约金赔出 base.input_text(houseContractEndPage.addContractEndMould['return_money_loc'], 666) base.type_select(houseContractEndPage.typeMould['bear_type_loc'], 'COMPANY') # 承担方-公司 base.type_select(houseContractEndPage.typeMould['bear_name'], 'ISZTECH') base.type_date(houseContractEndPage.typeMould['money_start_date'], '2017-07-07') base.type_date(houseContractEndPage.typeMould['money_end_date'], '2017-08-08') base.type_select(houseContractEndPage.typeMould['explain'], 'VACANCY') # 情况说明-空置期 base.type_select(houseContractEndPage.typeMould['dispute'], 'N') base.type_date(houseContractEndPage.typeMould['receivable_date'], '2017-08-08') # 打款信息 base.type_select(houseContractEndPage.typeMould['pay_type'], 'OWNER') # 打款类别-业主收款 base.input_text(houseContractEndPage.addContractEndMould['pay_name_loc'], 'AutoTest') base.input_text(houseContractEndPage.addContractEndMould['pay_bank_loc'], u'中国银行') base.input_text(houseContractEndPage.addContractEndMould['pay_bank_no_loc'], '12345678910') # base.input_text(HouseContractEndPage.addContractEndMould['company_no_loc'],u'杭州爱上租科技有限公司') base.click(houseContractEndPage.addContractEndMould['submit_loc']) base.check_submit() consoleLog(u'委托合同 %s 终止结算新增成功' % contractNum) finally: base.driver.quit()