class ZenTaoBug(): #定位登录 loc1 = ("id", "account") loc2 = ("name", "password") loc3 = ("id", "submit") #添加bug loc_test = ("link text" "测试") loc_bug = ("link text", "Bug") loc_addbug = ("xpath", ".//*[@id='createActionMenu']/a") loc_truck = ("xpath", ".// *[ @ id = 'openedBuild_chosen'] / ul") loc_truck_add = ("xpath", ".// *[ @ id = 'openedBuild_chosen'] / div / ul / li") loc_input_title = ("id", "title") loc_avse = ("css select", "#submit") #需要先切换frame loc_input_body = ("class name", ".article-content") def __init__(self): self.driver = driver self.zentao = Base(self.driver) def login(self, user="******", psw="123456"): self.zentao.sendkeys(self.loca1, user) self.zentao.sendkeys(self.loca2, psw) self.zentao.click(self.loca3)
class LoginPage(): def __init__(self, driver): self.driver = driver self.b = Base(self.driver) def login(self, usr="******", psw="666666"): self.driver.get( "http://47.97.160.167:8980/weibofenqi-manager/login/index.do") self.driver.maximize_window() sleep(1) self.b.clear(("css selector", ".formBox>form>input:nth-child(1)")) self.b.send(("css selector", ".formBox>form>input:nth-child(1)"), usr) self.b.clear(("css selector", ".formBox>form>input:nth-child(3)")) self.b.send(("css selector", ".formBox>form>input:nth-child(3)"), psw) self.b.click(("css selector", ".formBox>form>input:nth-child(5)")) # self.driver.find_element_by_css_selector(".formBox>form>input:nth-child(1)").send_keys(usr) # self.driver.find_element_by_css_selector(".formBox>form>input:nth-child(3)").send_keys(psw) # self.driver.find_element_by_css_selector(".formBox>form>input:nth-child(5)").click() def get_login_result(self): try: r = self.b.get_text(("css selector", "#sessionInfoDiv>strong")) return r except: r = "" return r
def login(driver,user="******",psw="123456"): "普通登录函数" zen = Base(driver) driver.get(url) zen.sendKeys(loc1,user) zen.sendKeys(loc2,psw) zen.click(loc3)
def _login(driver, host, user="******", psw="123456"): '''普通登录函数''' zen = Base(driver) driver.get(host + "/zentao/user-login-L3plbnRhby8=.html") zen.sendKeys(loc1, user) zen.sendKeys(loc2, psw) zen.click(loc3) time.sleep(2)
def _login(driver, host, user='******', psw='123456'): '''普通登录函数''' ximopanda = Base(driver) driver.get(host) ximopanda.sendKeys(loc1, user) ximopanda.sendKeys(loc2, psw) ximopanda.click(loc3) time.sleep(2)
def _loginShop(driver, host ,user=config["shopName"], psw=config["shopPwd"]): zen = Base(driver) driver.maximize_window() driver.get(host+"/?_plat=shop") zen.sendKeys(loc1, user) zen.sendKeys(loc2, psw) zen.click(loc3) t = zen.get_text(loc6) assert text_0 in t
def test_a(self): """ 用例说明:1111 """ self.driver.get("https://www.baidu.com") baidu = Base(self.driver) loc1 = ("id", "kw") loc2 = ("id", "su") baidu.sendKeys(loc1, "python") time.sleep(2) baidu.click(loc2) time.sleep(2)
def _login(driver, host, user='******', psw='5423110.'): ''' 登录函数 ''' imooc = Base(driver) driver.get(host + '/user/newlogin') imooc.max() imooc.sendKeys(loc1, user) imooc.sendKeys(loc2, psw) imooc.click(loc3) time.sleep(2)
def test_guge(): driver = webdriver.Chrome() web = Base(driver) # 实例化 driver.get("https://www.baidu.com") loc_1 = ("id", "kw") web.send(loc_1, "hello") loc_2 = ("id", "su") web.click(loc_2) # Python is likely shutting down '''driver.close()'''
def _loginH5(driver, user=config["h5Name"], psw=config["h5Pwd"],path=config["h5path"]): zen = Base(driver) driver.set_window_size(500,1100) driver.get(path) zen.sendKeys(loc1, user) zen.sendKeys(loc2, psw) zen.click(loc4) time.sleep(2) t = zen.get_text(loc7) assert t == text_1
def _loginAdmin(driver, host, user=config["adminName"], psw=config["adminPwd"]): zen = Base(driver) driver.maximize_window() driver.get(host+"/?_plat=admin") zen.sendKeys(loc1, user) zen.sendKeys(loc2, psw) zen.click(loc3) time.sleep(2) t = zen.get_text(loc6) assert text_0 in t
class LoginPage(): '''登录类''' def __init__(self, driver): #获取浏览器句柄 self.driver = driver #将被操作的excel文件路径,及具体工作薄 real_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) data_path = os.path.join(os.path.join(real_path, "data"), "cze_data.xls") sheetName = "login" #工作薄内容为登录的操作步骤数据 #读取excel文件,并实例化 data = Common_Read(data_path, sheetName) #转化excel文件数据为可操作字典数据 self.data_value = data.dict_data() #实例化浏览器基本操作类 self.b = Base(self.driver) def login(self, username, password): '''用户登录函数''' list_value = {} for i in range(len(self.data_value)): list_value["loca%d" % (i + 1)] = (self.data_value[i]["type"], self.data_value[i]["value"]) #调用浏览器中基本操作事件函数,如:send(定位元素并填入数据)、click(定位元素,并点击) self.b.send(list_value["loca1"], username) self.b.send(list_value["loca2"], password) time.sleep(8) self.b.click(list_value["loca3"]) # self.driver.get_screenshot_as_file(r"C:\Users\safecode\Desktop\selenium_bug\%s_login_Result.png" %username) time.sleep(1) return self.driver def login_test(self, username, password): '''用户登录函数''' print(username, password) list_value = {} for i in range(len(self.data_value)): list_value["loca%d" % (i + 1)] = (self.data_value[i]["type"], self.data_value[i]["value"]) #调用浏览器中基本操作事件函数,如:send(定位元素并填入数据)、click(定位元素,并点击) self.b.send(list_value["loca1"], username) time.sleep(1.5) self.b.send(list_value["loca2"], password) time.sleep(1.5) self.b.click(list_value["loca3"]) time.sleep(5)
def _login(driver, host, user="******", psw="a111111"): ''' 登录函数 ''' adviser = Base(driver) driver.get( host + "/account/login/index.htm?weChatType=aitou&referrer=http://m.dev.hbec.com/adviser/index/main#/" ) adviser.sendKeys(loc_phone, user) adviser.click(loc_next) adviser.sendKeys(loc_password, psw) adviser.click(loc_login)
class LoginPage(): #初始化登录页面中用到的参数,对base进行实例化 def __init__(self,driver): #对导入的base进行实例化 self.base = Base(driver) self.driver = driver #定位用户名元素的参数 self.loc_user = ("id","txtUserName") #定位密码元素的参数 self.loc_pwd = ("id","txtPassWord") #定位登录按钮元素的参数 self.button = ("id","btnSubmit") #定位登录成功后首页右上角出现的用户名 self.home_page_username = ("id","userName") #定义输入用户名方法 def input_username(self,user_name): self.user_name = user_name self.base.send_key(self.loc_user,self.user_name) #定义输入密码方法 def input_pwd(self,user_pwd): self.user_pwd = user_pwd self.base.send_key(self.loc_pwd,self.user_pwd) #定义点击登录方法 def click_submit(self): self.base.click(self.button) #获取登录后右上角的用户名 def get_login_username(self): try: ele = self.base.findElement(self.home_page_username) username = ele.text return username except: return "" #判断元素是否包含文本 def is_login_sucess(self,text): result = self.base.is_text_in_element(self.home_page_username,text) return result #判断是否存在alert弹窗,有的话就关闭,没有就忽略 def is_alert_exist(self): result = self.base.is_alert_exist() if result: result.accept() else: pass
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 _login(driver,host,user='******',psw='5423110.'): ''' 登录函数 ''' print('--session --start---!') driver.get(host+'/user/newlogin') driver.delete_all_cookies() driver.refresh() imooc = Base(driver) imooc.max() imooc.sendKeys(loc1,user) imooc.sendKeys(loc2,psw) imooc.click(loc3) time.sleep(2)
class Login_Blog(): '''登录类封装''' def __init__(self,driver): '''初始化driver参数''' self.driver = driver self.driver_n = Base(self.driver) def input_user(self,username): '''输入用户名''' username_locator = ("id","LoginName") self.driver_n.send_keys(username_locator,username) # WebDriverWait(self.driver,10).until(lambda x: x.find_element("id","LoginNamexx")).clear() # WebDriverWait(self.driver, 10).until(lambda x: x.find_element("id", "LoginNamexx")).send_keys(username) def input_psw(self,psw): '''输入密码''' password_locator = ("id","Password") self.driver_n.send_keys(password_locator,psw) # self.driver.find_element_by_id("Password").clear() # self.driver.find_element_by_id("Password").send_keys(psw) def click_button(self): '''点击登录按钮''' loginbutton_locator = ("id","submitBtn") self.driver_n.click(loginbutton_locator) # self.driver.find_element_by_id("submitBtn").click() def login(self,username,psw): '''登录公共方法''' try: self.input_user(username) self.input_psw(psw) self.click_button() except Exception as msg: print(u"异常原因%s"%msg) nowTime = time.strftime("%Y%m%d.%H.%M.%S") t = self.driver.get_screenshot_as_file(os.path.join(pic_path,'%s.jpg' % nowTime)) print(u"截图结果:%s"%t)
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 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()
class LoginPage(): def __init__(self, driver): #初始化 self.driver = driver self.b = Base(self.driver) def login(self, uesr="admin", psw="123456"): self.driver.get("http://127.0.0.1/zentao/user-login.html") time.sleep(3) self.b.send("xpath", ".//*[@id='account']", "admin") self.b.send("css selector", "[name='password']", "123456") self.b.click("css selector", "#submit") def get_login_reslut(self): #断言 #time.sleep(3) #try: #t = self.b.get_text("css selector", "#userMenu>a") #return t #except: #return "" self.b.get_text("css selector", "#userMenu>a", timeout=5)
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 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 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 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()
class Approve_cg(): def __init__(self,driver): self.driver = driver self.base = Base(self.driver) #定位用户名元素的参数 self.loc_user = ("id","txtUserName") #定位密码元素的参数 self.loc_pwd = ("id","txtPassWord") #定位登录按钮元素的参数 self.button = ("id","btnSubmit") #首页导航菜单中的“涉访管理”按钮元素 self.loc_sfgl = ("css selector",".nav-feifang-n>a>cite>p") #涉访审批管理菜单元素 self.loc_spgl = ("link text","涉访审批管理") #“撤管待审批”菜单元素 self.loc_cgdsp = ("link text","撤管待审批") # 只能用JS来定位到“审批按钮” self.appr_butn = '''document.getElementsByTagName('iframe')[2].contentWindow.document.body. getElementsByClassName('layui-table-body')[1].getElementsByClassName('layui-btn')[0].click()''' #审批结果:选择同意或不同意,index为1是同意,为0是不同意 self.appr_result = '''document.getElementsByTagName('iframe')[3].contentWindow.document.body. getElementsByTagName('fieldset')[1].getElementsByClassName('layui-anim')[1].click()''' #审批意见框 self.appr_idea = '''document.getElementsByTagName('iframe')[3].contentWindow.document. body.getElementsByTagName('fieldset')[1].getElementsByClassName('layui-textarea')[0].value=("可以")''' #提交审批按钮 self.appr_submit = '''document.getElementsByTagName('iframe')[3].contentWindow.document. getElementById("spButton").click()''' #审批“操作成功”提示 self.submit_tips = ("css selector",".layui-layer-content.layui-layer-padding") #登录审批所长帐号、进入列管待审批列表 def approve_list(self,username,password): self.base.send_key(self.loc_user,username) self.base.send_key(self.loc_pwd,password) self.base.click(self.button) self.base.click(self.loc_sfgl) self.base.click(self.loc_spgl) self.base.click(self.loc_cgdsp) time.sleep(2) self.driver.execute_script(self.appr_butn) time.sleep(2) self.driver.switch_to.default_content() def approve(self): # 执行JS脚本,选择审批结果为:同意 self.driver.execute_script(self.appr_result) #录入审批意见 self.driver.execute_script(self.appr_idea) #提交审批 self.driver.execute_script(self.appr_submit) #提交审批后,页面返回到弹窗之外的页面 self.driver.switch_to.default_content() #所长在撤管待审批列表中提交审批,判断是否“操作成功” def is_submit_success(self,text): result = self.base.is_text_in_element(self.submit_tips,text) return result
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()
class Login(Base): def __init__(self, driver): self.base = Base(driver) @allure.story('登录操作') def login(self): # d = u2.connect('emulator-5554') # #d.app_install( # #'https://imtt.dd.qq.com/16891/7E569C80A3714D58E77F6173EB8F6329.apk?fsname=com.netease.cloudmusic_5.7.2_130.apk&csr=1bbd') # d(resourceId='com.netease.cloudmusic:id/q6').wait(timeout=5) # d(resourceId='com.netease.cloudmusic:id/q6').click_exists(timeout=3) # d(resourceId='com.netease.cloudmusic:id/acb').click_exists(timeout=3) # d(resourceId="com.netease.cloudmusic:id/q1").click_exists(timeout=3) # d(resourceId="com.netease.cloudmusic:id/i9").set_text("13226349780") # d(resourceId="com.netease.cloudmusic:id/i7").set_text("*********") # d(resourceId='com.netease.cloudmusic:id/q1').click_exists(timeout=3) self.base.click(setting) self.base.click(login) self.base.click(login_phone) self.base.send_keys(phone_input, phone_input_c)
class Mgsqgl(): def __init__(self, driver): self.driver = driver self.base = Base(self.driver) #定位用户名元素的参数 self.loc_user = ("id", "txtUserName") #定位密码元素的参数 self.loc_pwd = ("id", "txtPassWord") #定位登录按钮元素的参数 self.button = ("id", "btnSubmit") #首页导航栏右箭头 self.nav_left = ("css selector", "#nav_left>img") #定位导航菜单敏感时期管理 self.menu_mgsqgl = ("css selector", ".nav-minganshiqi-n>a>cite>p") #新增敏感时期按钮 self.loc_add_mgsq = ("id", "btnAddMgsq") #新增敏感时期:名称 self.loc_add_mgsq_mc = ("id", "mc") #新增敏感时期:有效期始 self.loc_add_mgsq_yxqs = ("id", "yxqs") #新增敏感时期:有效期止 self.loc_add_mgsq_yxqz = ("id", "yxqz") #日历选择框中:现在 self.loc_date_now = ('css selector', '.laydate-btns-now') #日历选择框中:4-30 self.loc_date_other = ( 'xpath', ".//*[@id='layui-laydate2']/div[1]/div[2]/table/tbody/tr[5]/td[5]") #敏感时期类型: self.loc_mgsqlx = ("css selector", ".layui-input.layui-unselect") #敏感时期类型:普通涉访人员 self.loc_ptsfry = ( "css selector", ".layui-unselect.layui-form-select.layui-form-selected>dl:nth-child(2)" ) #敏感时期弹窗:保存按钮 self.loc_save = ("xpath", "html/body/div[1]/form/div[5]/a") #敏感时期弹窗:关闭按钮 self.loc_close = ("xpath", "html/body/div[1]/form/div[5]/button") #是否设置预警值弹窗:确定按钮 self.loc_yj_confirm = ("xpath", ".//*[@id='layui-layer3']/div[3]/a[1]") #是否设置预警值弹窗:取消按钮 self.loc_yj_cancel = ("xpath", ".//*[@id='layui-layer3']/div[3]/a[2]") #设置预警值弹窗窗口id,用于判断这个窗口是否打开了 self.loc_yj_mc = ("id", "mc") #-------------------预警设置页面------------------------ #设置预警值:蓝色预警 self.loc_yjfz_lsyj = ("xpath", ".//*[@id='yjFz']/li[1]/div/input") #设置预警值:提交按钮 self.loc_szyjz_submit = ("css selector", ".submit_btn") #提交提示 /删除成功提示共用 self.submit_tips = ("css selector", ".layui-layer-content.layui-layer-padding") #点击列表页的查看按钮 self.loc_list_view = '''document.getElementsByTagName('iframe')[1].contentWindow.document. body.getElementsByTagName('tbody')[0].getElementsByTagName('a')[0].click()''' #------------------查看弹窗 ------------------ #title 与查看报告共用 self.loc_title = ("css selector", ".layui-layer-title") #-----------------编辑弹窗-------------------- self.loc_list_edit = '''document.getElementsByTagName('iframe')[1].contentWindow.document. body.getElementsByTagName('tbody')[0].getElementsByTagName('a')[1].click()''' #---编辑弹窗:提交按钮 self.loc_edit_submit = ("css selector", ".layui-btn") #----------------人员导入--------------- self.loc_list_import = '''document.getElementsByTagName('iframe')[1].contentWindow.document. body.getElementsByTagName('tbody')[0].getElementsByTagName('a')[2].click()''' #-人员导入:管控来源 self.loc_gkly = ("css selector", ".layui-unselect.layui-form-select") # 管控来源下拉选项: self.loc_gabjb = ("css selector", ".layui-anim.layui-anim-upbit:nth-child(2)") #导入文件 self.loc_file = ("id", "file") #提交按钮 self.loc_import_submit = ("css selector", ".layui-btn") #导入结果提示框标题 self.loc_import_mess_title = ("css selector", ".layui-layer-title") #-----------列表:删除按钮---- self.loc_list_delete = '''document.getElementsByTagName('iframe')[1].contentWindow.document. body.getElementsByTagName('tbody')[0].getElementsByTagName('a')[3].click()''' #删除提示框:确定删除按钮 self.loc_dele_butn = ("css selector", ".layui-layer-btn0") #-----------列表:查看报告按钮----- self.loc_view_report = '''document.getElementsByTagName('iframe')[1].contentWindow.document. body.getElementsByTagName('tbody')[0].getElementsByTagName('a')[4].click()''' #登录帐号 def login(self, username, passwd): self.base.send_key(self.loc_user, username) self.base.send_key(self.loc_pwd, passwd) self.base.click(self.button) #进入敏感时间管理列表页,“新增敏感时期” def mgsqgl_list(self): self.base.click(self.nav_left) time.sleep(2) self.base.click(self.menu_mgsqgl) self.driver.switch_to.frame(1) time.sleep(2) self.base.click(self.loc_add_mgsq) time.sleep(2) self.driver.switch_to.default_content() self.driver.switch_to.frame("layui-layer-iframe2") time.sleep(2) self.base.send_key(self.loc_add_mgsq_mc, "国庆节") self.base.click(self.loc_add_mgsq_yxqs) self.base.click(self.loc_date_now) self.base.click(self.loc_add_mgsq_yxqz) self.base.click(self.loc_date_other) self.base.click(self.loc_mgsqlx) self.base.click(self.loc_ptsfry) #新增敏感时期后,点击“保存” def mgsqgl_save(self): self.base.click(self.loc_save) self.driver.switch_to.default_content() self.driver.switch_to.frame(1) time.sleep(2) #新增敏感时期后,点击“关闭” def mgsqgl_close(self): self.base.click(self.loc_close) self.driver.switch_to.default_content() self.driver.switch_to.frame(1) #是否出现“是否设置预警值”的弹窗 def is_set_early_warn(self): try: ele = self.base.findElement(self.loc_yj_confirm) return True except: return False #将新增敏感时期保存后,弹出是否进行预警值设置的点击按钮单独提出来,便于后续分别调用 #点击取消按钮 def mgsqgl_qxyj(self): self.base.click(self.loc_yj_cancel) #点击确定按钮 def mgsqgl_jryj(self): self.base.click(self.loc_yj_confirm) #是否进入设置预警值的页面,用于判断新增敏感时期并保存后是点击确定成功进入了预警值设置,还是点击取消成功未进入预警值设置 def is_open_early_warn(self): try: self.driver.switch_to.default_content() self.driver.switch_to.frame(2) ele = self.base.findElement(self.loc_yj_mc) return True except: return False #设置预警值,修改了蓝色预警值,提交 def szyjz(self, value): self.base.clear(self.loc_yjfz_lsyj) self.base.send_key(self.loc_yjfz_lsyj, value) self.base.click(self.loc_szyjz_submit) self.driver.switch_to.default_content() #是否提交成功 此方法未用上,因为提示太短,获取不到 def is_submit_success(self, text): result = self.base.is_text_in_element(self.submit_tips, text) return result #点击列表上的查看按钮 def click_view(self): self.base.click(self.nav_left) time.sleep(2) self.base.click(self.menu_mgsqgl) time.sleep(2) self.driver.execute_script(self.loc_list_view) self.driver.switch_to.default_content() #点击列表上的编辑按钮 def click_edit(self): self.base.click(self.nav_left) time.sleep(2) self.base.click(self.menu_mgsqgl) time.sleep(2) self.driver.execute_script(self.loc_list_edit) self.driver.switch_to.default_content() self.driver.switch_to.frame(2) #判断弹窗的标题文本是否包含“查看”,返回True或False def get_title(self, text): result = self.base.is_text_in_element(self.loc_title, text) return result #编辑弹窗的标题文本获取为空,所以使用获取窗口中的“提交按钮”文本作为判断 def get_submit_text(self, text): result = self.base.is_text_in_element(self.loc_edit_submit, text) return result #人员导入操作 def import_mem(self): self.base.click(self.nav_left) time.sleep(2) self.base.click(self.menu_mgsqgl) time.sleep(2) self.driver.execute_script(self.loc_list_import) self.driver.switch_to.frame(2) self.base.click(self.loc_gkly) self.base.click(self.loc_gabjb) self.base.send_key(self.loc_file, r"C:\Users\Ling\Downloads\lksfmb.xlsx") self.base.click(self.loc_import_submit) self.driver.switch_to.default_content() #获取导入结果 def get_import_result(self, text): result = self.base.is_text_in_element(self.loc_import_mess_title, text) return result #删除敏感时期 def delete(self): self.base.click(self.nav_left) time.sleep(2) self.base.click(self.menu_mgsqgl) time.sleep(2) self.driver.execute_script(self.loc_list_delete) self.driver.switch_to.frame(1) self.base.click(self.loc_dele_butn) self.driver.switch_to.default_content() #删除敏感时期成功 def del_success(self, text): result = self.base.is_text_in_element(self.submit_tips, text) return result #查看报告 def view_report(self): self.base.click(self.nav_left) time.sleep(2) self.base.click(self.menu_mgsqgl) time.sleep(2) self.driver.execute_script(self.loc_view_report) self.driver.switch_to.default_content()