class qingjia_daixinshijia_page(BasePage): def __init__(self, appiumdriver): self.base_page = BasePage(appiumdriver) '''带薪事假成功申请''' def daixinshijia_zhengchang_success(self): # 点击请假 qingjia_button = self.base_page.find_byID_( 'com.flashexpress.backyard:id/_leave') qingjia_button.click() # 切换到webview下 view_now = 'WEBVIEW_com.flashexpress.backyard' self.base_page.to_now_context(view_now) cot = self.base_page.get_context() print(cot) print('点击请假类型前:') # 点击请假类型 self.base_page.find_byxpath( '//*[@id="app"]/div/div[1]/div[1]/div/input').click() cots = self.base_page.get_context() print(cots) print('点击请假类型后:') # 点击带薪事假(带薪)按钮 self.base_page.find_byClassAndTag('date-list', 'li', 0, 1).click() time.sleep(3) self.base_page.to_now_context(view_now) # 点击开始时间按钮 # self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[2]/div/input').click() self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 1, 0).click() print('还没有点击时间21') # 点击21号,如果后续日期更换,只更换对于的坐标就可以了 ''' 位置信息 ''' self.base_page.by_TouchAction_dingwei(100, 1700) time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800, 1300) print('点击了确定按钮') time.sleep(3) # 点击结束时间按钮 self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 2, 0).click() time.sleep(2) # 点击22号,如果后续日期更换,只更换对于的坐标就可以了 # 坐标位置 = [18,1473][165,1608] ''' 位置信息 ''' self.base_page.by_TouchAction_dingwei(200, 1700) time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800, 1300) time.sleep(1) # 输入请假原因 self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[6]/textarea' ).send_keys('带薪事假-请假的原因') time.sleep(2) # 浏览器页面需要向上滑动一下 self.base_page.swipeUp() time.sleep(2) # 点击提交按钮 # 提交按钮 = [90, 1695][990, 1830] self.base_page.by_TouchAction_dingwei(500, 1750) time.sleep(1) # 提交的确认弹框 # 确定按钮 = [540,1245][1017,1365] self.base_page.by_TouchAction_dingwei(800, 1300) time.sleep(3)
class shangjishenpi_shenqing_peixunjia_page(BasePage): def __init__(self, appium_driver): self.base_page = BasePage(appium_driver) def shenqing_peixunjia_bohui(self): self.base_page.to_now_context('NATIVE_APP') time.sleep(3) # 点击请假 qingjia_button = self.base_page.find_byID_( 'com.flashexpress.backyard:id/_leave') qingjia_button.click() time.sleep(1) # 切换到webview下 view_now = 'WEBVIEW_com.flashexpress.backyard' self.base_page.to_now_context(view_now) cot = self.base_page.get_context() time.sleep(3) print(cot) print('点击请假类型前:') # 点击请假类型 try: elem = self.base_page.find_byxpath( '//*[@id="app"]/div/div[1]/div[1]/div/input') except: for i in range(3): elem.click() time.sleep(1) else: elem.click() cots = self.base_page.get_context() print(cots) print('点击请假类型后:') time.sleep(1) # 点击公司培训假(带薪)按钮,修改请假类型,只需要更改后边的li的下标 self.base_page.find_byClassAndTag('date-list', 'li', 0, 11).click() time.sleep(3) self.base_page.to_now_context(view_now) time.sleep(3) # 点击开始时间按钮 # self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[2]/div/input').click() # self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 1, 0).click() # self.base_page.css_select("document.querySelector('.mt-item-input')").click() self.base_page.css_select('.mt-item-input')[1].click() time.sleep(1) self.base_page.to_now_context(view_now) time.sleep(3) print(self.base_page.get_context()) print('还没有点击时间25') # 点击24号,如果后续日期更换,只更换对于的坐标就可以了 ''' 位置信息 [318,1473][465,1608]''' a = read_yaml_file('shenqing_peixunjia_bohui', 'startTime') self.base_page.by_touchAction_uiautomator2(a[0], a[1]) time.sleep(1) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_touchAction_uiautomator2(800, 1300) print('点击了确定按钮') time.sleep(3) # 点击结束时间按钮 self.base_page.css_select('.mt-item-input')[2].click() time.sleep(2) # 点击25号,如果后续日期更换,只更换对于的坐标就可以了 # 坐标位置 = ''' 位置信息 [468,1473][615,1608]''' b = read_yaml_file('shenqing_peixunjia_bohui', 'endTime') self.base_page.by_touchAction_uiautomator2(b[0], b[1]) # self.base_page.css_select('document.querySelectorAll(".box-message")[21]').click() time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_touchAction_uiautomator2(800, 1300) # self.base_page.css_select("document.querySelector('.picker-toolbar span.mint-datetime-action.mint-datetime-confirm')").click() time.sleep(2) # 输入请假原因 self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[6]/textarea' ).send_keys('年假两天-请假的原因') time.sleep(2) # 浏览器页面需要向上滑动一下 self.base_page.swipeUp() time.sleep(2) # 点击提交按钮 # 提交按钮 = [90, 1695][990, 1830] self.base_page.by_touchAction_uiautomator2(500, 1750) # self.base_page.css_select('document.querySelector(".mint-button-text")').click() time.sleep(2) # 提交的确认弹框 # 确定按钮 = [540,1245][1017,1365] self.base_page.by_touchAction_uiautomator2(800, 1300) time.sleep(3) #请假成功后,退出账号22399,登入账号 22395 self.base_page.to_now_context('NATIVE_APP') time.sleep(3) self.base_page.find_byandroid_text('我的').click() time.sleep(1) self.base_page.find_byandroid_text('退出').click() time.sleep(1) self.base_page.find_byandroid_text('确定').click() # 登入账号 22395 usename = self.base_page.find_byID_( 'com.flashexpress.backyard:id/userName') usename.send_keys(22395) time.sleep(1) pwd = self.base_page.find_byID_( 'com.flashexpress.backyard:id/userPass') pwd.send_keys(123456) time.sleep(1) #点击确定按钮 time.sleep(1) self.base_page.find_byID_('com.flashexpress.backyard:id/login').click() #点击审批按钮 self.base_page.to_now_context('NATIVE_APP') time.sleep(3) ''' 底部导航栏是原生按钮 如果当前页面在可见审批导航栏页面,需要点击审批按钮,进入审批页面 点击我的申请按钮 点击待审批按钮,进入请假申请页面 页面向上滑动一次 点击撤销按钮 点击确认撤销提示的 确定按钮 点击页面的返回按钮,页面返回至审批页面 ''' # 点击审批按钮 try: ele = self.base_page.find_bytext('审批') except NoSuchElementException: for i in range(3): ele.click() time.sleep(1) else: ele.click() time.sleep(2) context_now = 'WEBVIEW_com.flashexpress.backyard' self.base_page.to_now_context(context_now) time.sleep(3) #点击我的审批按钮 wodeshenpi = self.base_page.find_byxpath('//*[@id="app"]/div/a[1]') print(wodeshenpi) wodeshenpi.click() #点击待审批按钮 '''[0,348][1080,822]''' self.base_page.to_now_context(context_now) time.sleep(5) self.base_page.by_touchAction_uiautomator2(500, 500) # self.base_page.css_ele_select("div.mint-cell-value.is-link").click() time.sleep(1) self.base_page.to_now_context(context_now) time.sleep(5) #页面滑动一次 self.base_page.swipeUp() #点击驳回按钮 //*[@id="pageTwo"]/div/div[1]/div[6]/span[1] [60,1602][510,1740] # self.base_page.find_byClassAndTag('mt-page-footer', 'span', 0, 0).click() self.base_page.by_touchAction_uiautomator2(400, 1700) time.sleep(3) self.base_page.to_now_context('WEBVIEW_com.flashexpress.backyard') time.sleep(5) #定位驳回原因输入框 //*[@id="pageTwo"]/div/div[1]/div[8]/div/div[2]/textarea [144,945][936,1248] self.base_page.to_now_context('NATIVE_APP') time.sleep(3) eles = self.base_page.find_byH5class("android.widget.EditText") eles.send_keys("培训假申请驳回的原因") time.sleep(1) #点击确定按钮 self.base_page.by_touchAction_uiautomator2(700, 1380) time.sleep(2)
class qingjia_nianjia_page(BasePage): def __init__(self,appiumdriver): self.base_page = BasePage(appiumdriver) ''' 年假正常时间范围,可以申请:选择2019/9/20-2019/9/21,如果修改脚本,只修改日期的 位置信息 就行 ''' def nianjia_zhengchang_success(self): #点击请假 qingjia_button = self.base_page.find_byID_('com.flashexpress.backyard:id/_leave') qingjia_button.click() #切换到webview下 view_now = 'WEBVIEW_com.flashexpress.backyard' self.base_page.to_now_context(view_now) cot = self.base_page.get_context() print(cot) print('点击请假类型前:') #点击请假类型 self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[1]/div/input').click() cots = self.base_page.get_context() print(cots) print('点击请假类型后:') #点击年假(带薪)按钮 self.base_page.find_byClassAndTag('date-list', 'li', 0, 0).click() time.sleep(3) self.base_page.to_now_context(view_now) #点击开始时间按钮 #self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[2]/div/input').click() self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 1, 0).click() print('还没有点击时间26') #点击26号,如果后续日期更换,只更换对于的坐标就可以了 [618,1473][768,1608] ''' 位置信息 ''' a = read_yaml_file('nianjia_zhengchang_success','startTime') self.base_page.by_TouchAction_dingwei(a[0],a[1]) time.sleep(3) #点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800,1300) print('点击了确定按钮') time.sleep(3) #点击结束时间按钮 self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 2, 0).click() time.sleep(2) # 点击28号,如果后续日期更换,只更换对于的坐标就可以了 # 坐标位置 = [921,1473][1068,1608] ''' 位置信息 ''' b = read_yaml_file('nianjia_zhengchang_success','endTime') self.base_page.by_TouchAction_dingwei(b[0], b[1]) time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800, 1300) time.sleep(1) #输入请假原因 self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[6]/textarea').send_keys('请假的原因') time.sleep(2) #浏览器页面需要向上滑动一下 self.base_page.swipeUp() time.sleep(2) #点击提交按钮 # 提交按钮 = [90, 1695][990, 1830] self.base_page.by_TouchAction_dingwei(500,1750) # 提交的确认弹框 # 确定按钮 = [540,1245][1017,1365] self.base_page.by_TouchAction_dingwei(800, 1300) time.sleep(3) ''' 年假超出时间范围:选择2019/9/18-2019/9/30,如果修改脚本,只修改日期的 位置信息 就行 10.12 = [921,1755][1068,1890] (1000,1800) 9.30 = [168,1614][315,1749] (250,1700) ''' def nianjia_chaochu_time_tishi(self): # 点击请假 qingjia_button = self.base_page.find_byID_('com.flashexpress.backyard:id/_leave') qingjia_button.click() time.sleep(1) # 切换到webview下 view_now = 'WEBVIEW_com.flashexpress.backyard' self.base_page.to_now_context(view_now) cot = self.base_page.get_context() print(cot) print('点击请假类型前:') # 点击请假类型 self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[1]/div/input').click() cots = self.base_page.get_context() print(cots) print('点击请假类型后:') # 点击年假(带薪)按钮 try: ele = self.base_page.find_byClassAndTag('date-list', 'li', 0, 0) except: for i in range(3): ele.click() time.sleep(1) else: ele.click() time.sleep(3) self.base_page.to_now_context(view_now) # 点击开始时间按钮 self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 1, 0).click() time.sleep(2) print('还没有点击时间18') ''' 位置信息 ''' # 点击9.30号,如果后续日期更换,只更换对于的坐标就可以了 [18,1614][165,1749] c = read_yaml_file('nianjia_chaochu_time_tishi','startTime') self.base_page.by_TouchAction_dingwei(c[0],c[1]) time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800, 1300) print('点击了确定按钮') time.sleep(3) # 点击结束时间按钮 self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 2, 0).click() time.sleep(2) # 点击10.12号,如果后续日期更换,只更换对于的坐标就可以了 # 坐标位置 = [168,1614][315,1749] ''' 位置信息 ''' d = read_yaml_file('nianjia_chaochu_time_tishi', 'endTime') self.base_page.by_TouchAction_dingwei(d[0], d[1]) time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800, 1300) time.sleep(1) # 输入请假原因 self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[6]/textarea').send_keys('请假的原因') time.sleep(2) # 浏览器页面需要向上滑动一下 self.base_page.swipeUp() time.sleep(2) # 点击提交按钮 # 提交按钮 = [90, 1695][990, 1830] self.base_page.by_TouchAction_dingwei(500, 1750) #请您确认请假时间确认弹框提示 # 确认 = [540,1245][1017,1365] self.base_page.by_TouchAction_dingwei(800,1300) time.sleep(3) #获取点击提交按钮后的提示 text = self.base_page.find_byxpath('/html/body/div[2]/div/div[2]/div[1]').text print('texttexttexttexttexttexttexttext') print(text) print('texttexttexttexttexttexttexttext') time.sleep(2) return text
class case_fail(BasePage): def __init__(self, appium_driver): self.base_page = BasePage(appium_driver) def to_wodeshenqing_page(self): time.sleep(3) self.base_page.to_now_context('NATIVE_APP') time.sleep(5) # result = [] # con = self.base_page.get_context() # # print('审批页面的context:开始输出') # print(con) # print('审批页面的context:输出结束') ''' 底部导航栏是原生按钮 如果当前页面在可见审批导航栏页面,需要点击审批按钮,进入审批页面 点击我的申请按钮 点击待审批按钮,进入请假申请页面 页面向上滑动一次 点击撤销按钮 点击确认撤销提示的 确定按钮 点击页面的返回按钮,页面返回至审批页面 ''' # 点击审批按钮 self.base_page.find_bytext('审批').click() time.sleep(2) # context_now = 'WEBVIEW_com.flashexpress.backyard' # self.base_page.to_now_context(context_now) # time.sleep(5) # print("点击我的申请前:当前的context") # #print(self.base_page.get_current_context()) # print("点击我的申请前:当前的context") # 点击我的申请 self.base_page.by_touchAction_uiautomator2(700, 400) # wodeshenqing = self.base_page.find_byxpath('//*[@id="app"]/div/a[2]') # wodeshenqing.click() time.sleep(1) def return_len_jiabanleixing(self): time.sleep(1) #print(self.base_page.return_current_window_handle()) #print(self.base_page.return_all_handles()) # #获取我的申请页面的加班类型文字 # self.base_page.to_now_context('NATIVE_APP') # time.sleep(5) self.base_page.to_now_context('WEBVIEW_com.flashexpress.backyard') time.sleep(5) try: jiabanleixing = self.base_page.find_byxpath( '//*[@id="pageOne"]/div/div[2]/div/div[1]/div/div/div/div[2]/div[2]/div[1]' ).text print('加班类型:' * 8) print(jiabanleixing) print('加班类型:' * 8) except NoSuchElementException: print('没有找到加班类型文字,证明不需要撤销') print(NoSuchElementException) else: time.sleep(2) return jiabanleixing def return_len_qingjialeixing(self): time.sleep(1) #print(self.base_page.return_current_window_handle()) #print(self.base_page.return_all_handles()) # #获取我的申请页面的请假类型文字 # self.base_page.to_now_context('NATIVE_APP') # time.sleep(5) self.base_page.to_now_context('WEBVIEW_com.flashexpress.backyard') time.sleep(5) print('当前context' * 8) print(self.base_page.get_current_context()) print('当前context' * 8) self.base_page.to_now_context('NATIVE_APP') # self.base_page.to_now_context('WEBVIEW_com.flashexpress.backyard') time.sleep(5) print('当前contexct' * 9) print(self.base_page.get_current_context()) print('当前contexct' * 9) page = self.base_page.return_page() print(page) try: qingjia = self.base_page.find_byH5_className( 'android.view.View', 12) except IndexError: print(IndexError) else: # qingjia = self.base_page.find_byxpath('//*[@id="pageOne"]/div/div[2]/div/div[1]/div/div/div/div[2]/div[1]/div[2]') print('请假' * 9) print(qingjia) print('请假' * 9) qingjialeixing = qingjia.text return qingjialeixing def chexiaoshenqing_success(self): # print('点击前待审批页面的context') # # print(self.base_page.get_context()) # print('点击前待审批页面的context') # 各种方法定位不到,只能通过模拟点击事件 [837,378][963,429] 考虑兼容性。进来靠右边一些 # 点击待审批按钮 self.base_page.by_touchAction_uiautomator2(x=900, y=400) # print('点击后待审批页面的context') # # print(self.base_page.get_context()) # print('点击后待审批页面的context') time.sleep(3) self.base_page.swipeUp() time.sleep(2) # 无法获取撤销按钮,改用模拟点击事件 [315,1602][765,1740] # self.base_page.find_by_H5_name('撤销').click() #点击撤销按钮 self.base_page.by_touchAction_uiautomator2(x=500, y=1700) time.sleep(2) # 无法获取确定按钮,改用模拟点击事件[546, 1353][1005, 1473] # self.base_page.find_by_H5_name('确定').click() self.base_page.by_touchAction_uiautomator2(x=900, y=1400) time.sleep(2) # 点击返回按钮,页面返回到审批页面,但是back方法不可使用, # self.base_page.back_() # 返回按钮 =[30,54][174,198] self.base_page.by_TouchAction_dingwei(100, 150) time.sleep(2) #self.base_page.to_now_context('NATIVE_APP') time.sleep(5) # self.base_page.to_now_context('WEBVIEW_com.flashexpress.backyard') # time.sleep(2) # self.base_page.find_byxpath('//*[@id="app"]/div/a[2]').text # 点击打卡按钮 [109,1791][160,1857] self.base_page.by_touchAction_uiautomator2(130, 1830) time.sleep(2) def fanhuidao_daka_page(self): #点击我的申请页面返回按钮 self.base_page.to_now_context('NATIVE_APP') time.sleep(5) #[30,54][174,198] self.base_page.by_touchAction_uiautomator2(100, 100) time.sleep(2) #点击打卡按钮 [109,1791][160,1857] self.base_page.by_touchAction_uiautomator2(130, 1830) time.sleep(2)
class qingjia_chanjianjia_page(BasePage): def __init__(self, appiumdriver): self.base_page = BasePage(appiumdriver) '''产检(带薪)成功申请''' def chanjianjia2day_zhengchang_success(self): # 点击请假 try: qingjia_button = self.base_page.find_byID_( 'com.flashexpress.backyard:id/_leave') except: for i in range(3): qingjia_button.click() time.sleep(1) else: qingjia_button.click() # 切换到webview下 view_now = 'WEBVIEW_com.flashexpress.backyard' self.base_page.to_now_context(view_now) cot = self.base_page.get_context() print(cot) print('点击请假类型前:') # 点击请假类型 try: ele = self.base_page.find_byxpath( '//*[@id="app"]/div/div[1]/div[1]/div/input') except NoSuchElementException: for i in range(3): ele.click() time.sleep(1) else: ele.click() cots = self.base_page.get_context() print(cots) print('点击请假类型后:') # 点击产检假(带薪)按钮,修改请假类型,只需要更改后边的li的下标 self.base_page.find_byClassAndTag('date-list', 'li', 0, 12).click() time.sleep(3) self.base_page.to_now_context(view_now) # 点击开始时间按钮 # self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[2]/div/input').click() self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 1, 0).click() print('还没有点击时间21') # 点击21号,如果后续日期更换,只更换对于的坐标就可以了 ''' 位置信息 ''' x = read_yaml_file('chanjianjia2day_zhengchang_success', 'startTime') self.base_page.by_TouchAction_dingwei(x[0], x[1]) time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800, 1300) print('点击了确定按钮') time.sleep(3) # 点击结束时间按钮 self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 2, 0).click() time.sleep(2) # 点击22号,如果后续日期更换,只更换对于的坐标就可以了 # 坐标位置 = [18,1473][165,1608] ''' 位置信息 ''' y = read_yaml_file('chanjianjia2day_zhengchang_success', 'endTime') self.base_page.by_TouchAction_dingwei(y[0], y[1]) time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800, 1300) time.sleep(1) # 输入请假原因 self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[6]/textarea' ).send_keys('产检假两天-请假的原因') time.sleep(2) # 浏览器页面需要向上滑动一下 self.base_page.swipeUp() time.sleep(2) # 点击提交按钮 # 提交按钮 = [90, 1695][990, 1830] self.base_page.by_TouchAction_dingwei(500, 1750) time.sleep(2) # 提交的确认弹框 # 确定按钮 = [540,1245][1017,1365] self.base_page.by_TouchAction_dingwei(800, 1300) self.base_page.to_now_context('NATIVE_APP') time.sleep(3) qingjia_button_text = self.base_page.find_byandroid_text('请假').text print('打卡页面的 请假按钮文字') print(qingjia_button_text) print('打卡页面的 请假按钮文字') return qingjia_button_text '''产检假,超出8天后,会提示:请假余额已用完 只能申请时间今天及今天以后,不限制次数,按天数算''' def chanjianjia9day_fail(self): time.sleep(2) # 点击请假 qingjia_button = self.base_page.find_byID_( 'com.flashexpress.backyard:id/_leave') qingjia_button.click() time.sleep(1) # 切换到webview下 view_now = 'WEBVIEW_com.flashexpress.backyard' self.base_page.to_now_context(view_now) cot = self.base_page.get_context() print(cot) print('点击请假类型前:') # 点击请假类型 self.base_page.find_byxpath( '//*[@id="app"]/div/div[1]/div[1]/div/input').click() time.sleep(1) cots = self.base_page.get_context() print(cots) print('点击请假类型后:') # 点击带薪事假(带薪)按钮,修改请假类型,只需要更改后边的li的下标 self.base_page.find_byClassAndTag('date-list', 'li', 0, 12).click() time.sleep(3) self.base_page.to_now_context(view_now) # 点击开始时间按钮 # self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[2]/div/input').click() self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 1, 0).click() time.sleep(1) print('还没有点击时间27') # 点击19号,如果后续日期更换,只更换对于的坐标就可以了 [771,1473][918,1608] ''' 位置信息 ''' a = read_yaml_file('chanjianjia9day_fail', 'startTime') self.base_page.by_TouchAction_dingwei(a[0], a[1]) time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800, 1300) print('点击了确定按钮') time.sleep(3) # 点击结束时间按钮 self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 2, 0).click() time.sleep(2) # 点击10.3 号,如果后续日期更换,只更换对于的坐标就可以了 # 坐标位置 = [618,1614][768,1749] ''' 位置信息 ''' b = read_yaml_file('chanjianjia9day_fail', 'endTime') self.base_page.by_TouchAction_dingwei(b[0], b[1]) time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800, 1300) time.sleep(1) # 输入请假原因 self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[6]/textarea' ).send_keys('产检假8.5天-请假的原因') time.sleep(2) # 浏览器页面需要向上滑动一下 self.base_page.swipeUp() time.sleep(2) # 点击提交按钮 # 提交按钮 = [90, 1695][990, 1830] self.base_page.by_TouchAction_dingwei(500, 1750) time.sleep(2) # 提交的确认弹框 # 确定按钮 = [540,1245][1017,1365] self.base_page.by_TouchAction_dingwei(800, 1300) # self.base_page.to_now_context('NATIVE_APP') time.sleep(3) # 获取点击提交按钮后的提示 请假余额已用完 a_text = self.base_page.find_byxpath( '/html/body/div[2]/div/div[2]/div[1]').text print('texttexttexttexttexttexttexttext') print(a_text) print('texttexttexttexttexttexttexttext') # 点击请假余额已用完确认提示 self.base_page.find_byxpath( '/html/body/div[2]/div/div[3]/button[2]').click() time.sleep(2) # 将context设置成原生app # self.base_page.to_now_context('NATIVE_APP') # time.sleep(5) # 点击返回按钮 # self.base_page.find_byID_('com.flashexpress.backyard:id/iv_back').click() self.base_page.by_touchAction_uiautomator2(100, 100) time.sleep(2) return a_text
class qingjia_chanjia_zaiciqingjia_page(BasePage): def __init__(self, appiumdriver): self.base_page = BasePage(appiumdriver) '''产假成功申请''' def chanjia2day_zaiciqingjia(self): self.base_page.to_now_context('NATIVE_APP') time.sleep(5) # 点击请假 try: qingjia_button = self.base_page.find_byID_( 'com.flashexpress.backyard:id/_leave') except NoSuchElementException: for i in range(20): qingjia_button.click() time.sleep(1) else: qingjia_button.click() time.sleep(3) # 切换到webview下 view_now = 'WEBVIEW_com.flashexpress.backyard' self.base_page.to_now_context(view_now) time.sleep(3) cot = self.base_page.get_context() print(cot) print('点击请假类型前:') # 点击请假类型 self.base_page.find_byxpath( '//*[@id="app"]/div/div[1]/div[1]/div/input').click() time.sleep(2) cots = self.base_page.get_context() print(cots) print('点击请假类型后:') # 点击带薪事假(带薪)按钮,修改请假类型,只需要更改后边的li的下标 self.base_page.find_byClassAndTag('date-list', 'li', 0, 3).click() time.sleep(3) self.base_page.to_now_context(view_now) time.sleep(3) # 点击开始时间按钮 # self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[2]/div/input').click() self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 1, 0).click() time.sleep(1) print('还没有点击时间21') # 点击27号,如果后续日期更换,只更换对于的坐标就可以了 ''' 位置信息 ''' a = read_yaml_file('chanjia2day_zaiciqingjia', 'startTime') self.base_page.by_TouchAction_dingwei(a[0], a[1]) time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800, 1300) print('点击了确定按钮') time.sleep(3) # 点击结束时间按钮 self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 2, 0).click() time.sleep(2) # 点击22号,如果后续日期更换,只更换对于的坐标就可以了 # 坐标位置 = [18,1473][165,1608] ''' 位置信息 ''' b = read_yaml_file('chanjia2day_zaiciqingjia', 'endTime') self.base_page.by_TouchAction_dingwei(b[0], b[1]) time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800, 1300) time.sleep(2) # 输入请假原因 self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[6]/textarea' ).send_keys('产假两天-请假的原因') time.sleep(2) # 浏览器页面需要向上滑动一下 self.base_page.swipeUp() time.sleep(2) # 点击提交按钮 # 提交按钮 = [90, 1695][990, 1830] self.base_page.by_TouchAction_dingwei(500, 1750) time.sleep(2) # 提交的确认弹框 # 确定按钮 = [540,1245][1017,1365] self.base_page.by_TouchAction_dingwei(800, 1300) time.sleep(2) # 获取点击提交按钮后的提示 请假余额已用完 a_text = self.base_page.find_byxpath( '/html/body/div[2]/div/div[2]/div[1]').text time.sleep(1) print('texttexttexttexttexttexttexttext') print(a_text) print('texttexttexttexttexttexttexttext') #点击请假余额已用完确认提示 self.base_page.find_byxpath( '/html/body/div[2]/div/div[3]/button[2]').click() time.sleep(2) #将context设置成原生app # self.base_page.to_now_context('NATIVE_APP') # time.sleep(5) #点击返回按钮 # self.base_page.find_byID_('com.flashexpress.backyard:id/iv_back').click() self.base_page.by_touchAction_uiautomator2(100, 100) time.sleep(2) return a_text
class qingjia_peixunjia_page(BasePage): def __init__(self,appiumdriver): self.base_page = BasePage(appiumdriver) '''培训假(带薪)成功申请 过去时间的7.5天 2019/9/12-2019/9/19 12:[618,1191][768,1326] (700,1200) 19:[618,1332][768,1467] (700,1400) ''' def peixunjia_zhengchang_success(self): # 点击请假 qingjia_button = self.base_page.find_byID_('com.flashexpress.backyard:id/_leave') qingjia_button.click() # 切换到webview下 view_now = 'WEBVIEW_com.flashexpress.backyard' self.base_page.to_now_context(view_now) cot = self.base_page.get_context() print(cot) print('点击请假类型前:') # 点击请假类型 self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[1]/div/input').click() cots = self.base_page.get_context() print(cots) print('点击请假类型后:') # 点击公司培训假(带薪)按钮,修改请假类型,只需要更改后边的li的下标 self.base_page.find_byClassAndTag('date-list', 'li', 0, 11).click() time.sleep(3) self.base_page.to_now_context(view_now) # 点击开始时间按钮 # self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[2]/div/input').click() self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 1, 0).click() print('还没有点击时间21') # 点击24号,如果后续日期更换,只更换对于的坐标就可以了 ''' 位置信息 ''' a = read_yaml_file('peixunjia_zhengchang_success', 'startTime') self.base_page.by_TouchAction_dingwei(a[0], a[1]) time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800, 1300) print('点击了确定按钮') time.sleep(3) # 点击结束时间按钮 self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 2, 0).click() time.sleep(2) # 点击25号,如果后续日期更换,只更换对于的坐标就可以了 # 坐标位置 = [18,1473][165,1608] ''' 位置信息 ''' b = read_yaml_file('peixunjia_zhengchang_success', 'endTime') self.base_page.by_TouchAction_dingwei(b[0], b[1]) time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800, 1300) time.sleep(1) # 输入请假原因 self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[6]/textarea').send_keys('培训假(带薪)两天-请假的原因') time.sleep(2) # 浏览器页面需要向上滑动一下 self.base_page.swipeUp() time.sleep(2) # 点击提交按钮 # 提交按钮 = [90, 1695][990, 1830] self.base_page.by_TouchAction_dingwei(500, 1750) time.sleep(2) # 提交的确认弹框 # 确定按钮 = [540,1245][1017,1365] self.base_page.by_TouchAction_dingwei(800, 1300) self.base_page.to_now_context('NATIVE_APP') time.sleep(3) qingjia_button_text = self.base_page.find_byandroid_text('请假').text print('打卡页面的 请假按钮文字') print(qingjia_button_text) print('打卡页面的 请假按钮文字') return qingjia_button_text ''' 培训假(带薪)申请失败 过去时间的8.5天 2019/9/17-2019/9/25 17: [318,1332][465,1467](400,1400) 25:[468,1473][615,1608] (550,1500) ''' def peixunjia_9day_fail(self): # 点击请假 qingjia_button = self.base_page.find_byID_('com.flashexpress.backyard:id/_leave') qingjia_button.click() # 切换到webview下 view_now = 'WEBVIEW_com.flashexpress.backyard' self.base_page.to_now_context(view_now) cot = self.base_page.get_context() print(cot) print('点击请假类型前:') # 点击请假类型 self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[1]/div/input').click() cots = self.base_page.get_context() print(cots) print('点击请假类型后:') # 点击公司培训假(带薪)按钮,修改请假类型,只需要更改后边的li的下标 self.base_page.find_byClassAndTag('date-list', 'li', 0, 11).click() time.sleep(3) self.base_page.to_now_context(view_now) # 点击开始时间按钮 # self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[2]/div/input').click() self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 1, 0).click() print('还没有点击时间21') # 点击24号,如果后续日期更换,只更换对于的坐标就可以了 ''' 位置信息 ''' a = read_yaml_file('peixunjia_9day_fail', 'startTime') self.base_page.by_TouchAction_dingwei(a[0], a[1]) time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800, 1300) print('点击了确定按钮') time.sleep(3) # 点击结束时间按钮 self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 2, 0).click() time.sleep(2) # 点击25号,如果后续日期更换,只更换对于的坐标就可以了 # 坐标位置 = [18,1473][165,1608] ''' 位置信息 ''' b = read_yaml_file('peixunjia_zhengchang_success', 'endTime') self.base_page.by_TouchAction_dingwei(b[0], b[1]) time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800, 1300) time.sleep(1) # 输入请假原因 self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[6]/textarea').send_keys('培训假(带薪)两天-请假的原因') time.sleep(2) # 浏览器页面需要向上滑动一下 self.base_page.swipeUp() time.sleep(2) # 点击提交按钮 # 提交按钮 = [90, 1695][990, 1830] self.base_page.by_TouchAction_dingwei(500, 1750) time.sleep(2) # 提交的确认弹框 # 确定按钮 = [540,1245][1017,1365] self.base_page.by_TouchAction_dingwei(800, 1300) # self.base_page.to_now_context('NATIVE_APP') time.sleep(3) # 获取点击提交按钮后的提示 请假余额已用完 a_text = self.base_page.find_byxpath('/html/body/div[2]/div/div[2]/div[1]').text print('texttexttexttexttexttexttexttext') print(a_text) print('texttexttexttexttexttexttexttext') # 点击请假余额已用完确认提示 self.base_page.find_byxpath('/html/body/div[2]/div/div[3]/button[2]').click() # 将context设置成原生app self.base_page.to_now_context('NATIVE_APP') time.sleep(5) # 点击返回按钮 # self.base_page.find_byID_('com.flashexpress.backyard:id/iv_back').click() self.base_page.by_touchAction_uiautomator2(100, 100) return a_text '''
class qingjia_chanjia_2day_page(BasePage): def __init__(self, appiumdriver): self.base_page = BasePage(appiumdriver) '''产假两天''' def chanjia2day_zhengchang_success(self): self.base_page.to_now_context('NATIVE_APP') time.sleep(3) # 点击请假 try: qingjia_button = self.base_page.find_byID_( 'com.flashexpress.backyard:id/_leave') except NoSuchElementException: for i in range(3): qingjia_button.click() time.sleep(1) else: qingjia_button.click() time.sleep(1) # 切换到webview下 view_now = 'WEBVIEW_com.flashexpress.backyard' self.base_page.to_now_context(view_now) time.sleep(3) cot = self.base_page.get_context() print(cot) print('点击请假类型前:') # 点击请假类型 self.base_page.find_byxpath( '//*[@id="app"]/div/div[1]/div[1]/div/input').click() time.sleep(1) cots = self.base_page.get_context() print(cots) print('点击请假类型后:') # 点击带薪事假(带薪)按钮,修改请假类型,只需要更改后边的li的下标 self.base_page.find_byClassAndTag('date-list', 'li', 0, 3).click() time.sleep(3) self.base_page.to_now_context(view_now) time.sleep(3) # 点击开始时间按钮 # self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[2]/div/input').click() self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 1, 0).click() time.sleep(1) print('还没有点击时间21') # 点击27号,如果后续日期更换,只更换对于的坐标就可以了[771,1473][918,1608] (800,1500) ''' 位置信息 ''' a = read_yaml_file('chanjia2day_zhengchang_success', 'startTime') self.base_page.by_TouchAction_dingwei(a[0], a[1]) time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800, 1300) print('点击了确定按钮') time.sleep(3) # 点击结束时间按钮 self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 2, 0).click() time.sleep(2) # 点击30号,如果后续日期更换,只更换对于的坐标就可以了 [168,1614][315,1749] (200,1700) # 坐标位置 = [18,1473][165,1608] ''' 位置信息 ''' b = read_yaml_file('chanjia2day_zhengchang_success', 'endTime') self.base_page.by_TouchAction_dingwei(b[0], b[1]) time.sleep(3) # 点击确按钮 # 确定按钮位置 = [540,1260][1080,1380] self.base_page.by_TouchAction_dingwei(800, 1300) time.sleep(3) # 输入请假原因 self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[6]/textarea' ).send_keys('产假两天-请假的原因') time.sleep(2) # 浏览器页面需要向上滑动一下 self.base_page.swipeUp() time.sleep(2) # 点击提交按钮 # 提交按钮 = [90, 1695][990, 1830] self.base_page.by_TouchAction_dingwei(500, 1750) time.sleep(2) # 提交的确认弹框 # 确定按钮 = [540,1245][1017,1365] self.base_page.by_TouchAction_dingwei(800, 1300) time.sleep(2) # self.base_page.to_now_context('NATIVE_APP') # time.sleep(3) def click_daka(self): self.base_page.to_now_context('NATIVE_APP') time.sleep(3) self.base_page.find_byID_( 'com.flashexpress.backyard:id/idForTabImage').click()
class chexiaoshenqing(BasePage): def __init__(self, appium_driver): self.base_page = BasePage(appium_driver) ''' 审批撤销申请''' def shenpi_chexiaoshenqing(self): result = [] # con = self.base_page.get_context() # # print('审批页面的context:开始输出') # print(con) # print('审批页面的context:输出结束') ''' 底部导航栏是原生按钮 如果当前页面在可见审批导航栏页面,需要点击审批按钮,进入审批页面 点击我的申请按钮 点击待审批按钮,进入请假申请页面 页面向上滑动一次 点击撤销按钮 点击确认撤销提示的 确定按钮 点击页面的返回按钮,页面返回至审批页面 ''' self.base_page.to_now_context('NATIVE_APP') time.sleep(8) # 点击审批按钮 try: ele = self.base_page.find_bytext('审批') time.sleep(1) except NoSuchElementException: print(NoSuchElementException) for i in range(3): ele.click() time.sleep(1) else: ele.click() time.sleep(2) print(self.base_page.return_page()) context_now = 'WEBVIEW_com.flashexpress.backyard' self.base_page.to_now_context(context_now) time.sleep(5) #点击我的申请 wodeshenqing = self.base_page.find_byxpath('//*[@id="app"]/div/a[2]') print(wodeshenqing) wodeshenqing.click() print(self.base_page.return_page()) print('点了我的申请') time.sleep(3) # print('我的申请页面当前的handle') # #print(self.base_page.return_current_window_handle()) # print('我的申请页面当前的handle') # print('我的申请页面所有的handle') # #print(self.base_page.return_all_handles()) # print('我的申请页面所有的handle') # #获取我的申请页面的请假类型文字 # time.sleep(8) self.base_page.to_now_context('NATIVE_APP') # self.base_page.to_now_context('WEBVIEW_com.flashexpress.backyard') time.sleep(5) print('当前contexct' * 9) print(self.base_page.get_current_context()) print('当前contexct' * 9) page = self.base_page.return_page() print(page) try: qingjia = self.base_page.find_byH5_className( 'android.view.View', 12) except NoSuchElementException: print(NoSuchElementException) # 点击返回按钮,页面返回到审批页面,但是back方法不可使用, # self.base_page.back_() # 返回按钮 =[30,54][174,198] self.base_page.by_TouchAction_dingwei(100, 150) time.sleep(2) # self.base_page.to_now_context('NATIVE_APP') # time.sleep(8) self.base_page.to_now_context('WEBVIEW_com.flashexpress.backyard') time.sleep(5) wodeshenqing_text = self.base_page.find_byxpath( '//*[@id="app"]/div/a[2]').text result.append(wodeshenqing_text) print('result+' * 8) print(result) return result else: # qingjia = self.base_page.find_byxpath('//*[@id="pageOne"]/div/div[2]/div/div[1]/div/div/div/div[2]/div[1]/div[2]') print('请假' * 9) print(qingjia) print('请假' * 9) qingjialeixing = qingjia.text print('请假类型' * 8) print(qingjialeixing) print('请假类型' * 8) result.append(qingjialeixing) time.sleep(1) # print('点击前待审批页面的context') # print(self.base_page.get_context()) # print('点击前待审批页面的context') self.base_page.to_now_context('NATIVE_APP') time.sleep(5) #各种方法定位不到,只能通过模拟点击事件 [837,378][963,429] 考虑兼容性。进来靠右边一些 self.base_page.by_touchAction_uiautomator2(x=800, y=400) # print('点击后待审批页面的context') # #print(self.base_page.get_context()) # print('点击后待审批页面的context') time.sleep(3) self.base_page.swipeUp() time.sleep(3) #无法获取撤销按钮,改用模拟点击事件 [315,1602][765,1740] # self.base_page.find_by_H5_name('撤销').click() self.base_page.by_touchAction_uiautomator2(x=500, y=1700) time.sleep(2) #无法获取确定按钮,改用模拟点击事件[546, 1353][1005, 1473] # self.base_page.find_by_H5_name('确定').click() self.base_page.by_touchAction_uiautomator2(x=900, y=1400) time.sleep(2) #点击返回按钮,页面返回到审批页面,但是back方法不可使用, # self.base_page.back_() #返回按钮 =[30,54][174,198] self.base_page.by_TouchAction_dingwei(100, 150) time.sleep(2) # self.base_page.to_now_context('NATIVE_APP') # time.sleep(8) self.base_page.to_now_context('WEBVIEW_com.flashexpress.backyard') time.sleep(2) wodeshenqing_text = self.base_page.find_byxpath( '//*[@id="app"]/div/a[2]').text result.append(wodeshenqing_text) print('result+' * 8) print(result) return result