class backyard_login(BasePage):
    def __init__(self, appiumdriver):
        self.base_page = BasePage(appiumdriver)

    def login_to_index_page(self, zhanghao=None):
        #self.base_page.find_bytext('同意并继续')
        time.sleep(1)
        usename = self.base_page.find_byID_(
            'com.flashexpress.backyard:id/userName')
        usename.send_keys(zhanghao)
        time.sleep(1)
        pwd = self.base_page.find_byID_(
            'com.flashexpress.backyard:id/userPass')
        pwd.send_keys(123456)
        time.sleep(1)
        self.base_page.find_byID_('com.flashexpress.backyard:id/login').click()
        time.sleep(3)
        return self

    def login_success_tishi(self):

        try:
            element = self.base_page.find_bytext('同意并继续')
            if len(element) == 1:
                self.base_page.find_bytext('同意并继续').click()
        except NoSuchElementException:
            print('没有出现  同意并继续按钮 不需要任何操作')

        time.sleep(3)
        #查找输入工号是否这个elements存在,如果存在,证明没有登入成功,返回elements=1
        tishi = self.base_page.return_elements_num('输入工号')
        #如果返回胡elements=1 ,证明找到了,输入工号输入框,此时需要进行登入操作了,否则证明登入成功,只会打印 ‘已登入成功’
        if len(tishi) == 1:
            return True
        else:
            return False
Beispiel #2
0
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)
Beispiel #3
0
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 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
Beispiel #5
0
class OT_page(BasePage):
    def __init__(self,appiumdriver):
        self.base_page = BasePage(appiumdriver)
    '''申请OT'''
    def shenqing_ot(self):
        page = self.base_page.return_page()
        print(page)
        self.base_page.to_now_context('NATIVE_APP')
        time.sleep(3)
        # 点击审批按钮
        self.base_page.find_bytext('审批').click()
        time.sleep(1)

        #触摸考勤的框框 固定的位置,不用抽取
        self.base_page.by_touchAction_uiautomator2(200, 800)
        time.sleep(2)
        print('触摸点击申请OT按钮 +' * 8)
        # page = self.base_page.return_page()
        # print(page)
        print('触摸点击申请OT按钮 +' * 8)
        #触摸点击申请OT按钮
        self.base_page.by_touchAction_uiautomator2(745, 654)
        time.sleep(4)
        print('申请OT +' * 8)
        page = self.base_page.return_page()
        print(page)
        print('申请OT +' * 8)
        #点击OT日期
        self.base_page.by_touchAction_uiautomator2(500, 300)
        time.sleep(1)
        #OT日期
        a = read_yaml_file('shenqing_ot', 'OTtime')
        self.base_page.by_touchAction_uiautomator2(a[0], a[1])
        time.sleep(1)
        #申请OT
        self.base_page.by_touchAction_uiautomator2(800, 450)
        time.sleep(1)
        #申请OT确定按钮
        self.base_page.by_touchAction_uiautomator2(800, 1300)
        time.sleep(1)
        #开始时间
        self.base_page.by_touchAction_uiautomator2(800, 600)
        time.sleep(1)
        #开始时间日期
        b = read_yaml_file('shenqing_ot', 'startTime')
        self.base_page.by_touchAction_uiautomator2(b[0], b[1])
        time.sleep(2)
        #选择时间
        c = read_yaml_file('shenqing_ot', 'select_time')
        #选择申请OT得开始时间,0-24,在yaml文件中修改
        for i in range(c[0]):
            self.base_page.touchAction_point_to_point(267, 1650, 267, 1542)
            time.sleep(1)

        #点击确定按钮
        self.base_page.by_touchAction_uiautomator2(800, 1100)
        #点击时长
        time.sleep(1)
        self.base_page.by_touchAction_uiautomator2(800, 800)
        time.sleep(1)
        #点击确定
        self.base_page.by_touchAction_uiautomator2(800, 1300)
        time.sleep(2)
        # ele = self.base_page.find_byH5class('android.widget.EditText')
        ele = self.base_page.find_byH5_className('android.widget.EditText', 4)
        ele.send_keys('申请OT原因')
        time.sleep(1)
        self.base_page.swipeUp()
        time.sleep(1)
        self.base_page.swipeUp()
        time.sleep(1)
        #点击提交按钮
        self.base_page.by_touchAction_uiautomator2(500, 1600)
        time.sleep(5)

    def to_shenpi_page(self):
        self.base_page.by_touchAction_uiautomator2(800, 1500)
        time.sleep(1)