Exemple #1
0
class Clock_CaseMethod:
    def __init__(self, dev, failkey):
        self.driver = dev
        self.test = Action(self.driver)
        self.Case = TestCase()
        self.failkey = failkey

    def case_if_base(self, Skip=False):
        """设置基础,检查是否可以正常启动"""
        self.driver.activate_app(clock_pkg)

        if not Skip:
            if self.test.wait_if_activity(Permissions_Activity):
                self.test.find_byid(Permission_allow_button).click()
                time.sleep(1)

        self.Case.assertTrue(self.test.wait_if_activity(clock_activity),
                             '启动 时钟 失败,超时5秒未检测到主界面')
        self.test.set_PORTRAIT()
        time.sleep(1)

    def case_check_date_time(self):
        if TestResult.getTestFail(self.failkey):
            self.Case.skipTest('case_if_base test fail, skip this')
        self.case_if_base(True)
        time.sleep(1)
        self.test.find_byacc('时钟').click()
        time.sleep(0.5)
        time_test = TimeUtils.str_A_P_M_time()
        tmp_time = self.test.find_byid(clock_show_time).text
        tmp_date = self.test.find_byid(clock_show_data).text
        if tmp_time not in time_test:
            self.Case.fail(
                f'失败,请检查是否与北京时间相差过大,若差1分钟则不是问题,手机时间 : {tmp_time},当前时间 : {time_test}'
            )
        if tmp_date not in TimeUtils.str_date_week():
            self.Case.fail(
                f'失败,请检查是否与北京时间相差过大,手机日期 : {tmp_date},当前日期 : {TimeUtils.str_date_week()}'
            )

    def case_set_alarm(self):
        if TestResult.getTestFail(self.failkey):
            self.Case.skipTest('case_if_base test fail, skip this')
        self.case_if_base(True)
        time.sleep(1)
        self.test.find_byacc('闹钟').click()
        time.sleep(0.5)
        self.test.find_byacc('展开闹钟').click()
        time.sleep(1)
        self.test.find_byid(clock_del_alarm).click()
        time.sleep(0.2)
        self.test.find_byacc('展开闹钟').click()
        time.sleep(0.2)

        for text_acc in ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']:
            tmp = self.test.find_byacc(text_acc)
            if tmp.get_attribute('checked') == 'false':
                tmp.click()
            time.sleep(0.2)

        time.sleep(0.2)
        self.test.find_byid_list(clock_show_time)[0].click()
        time.sleep(0.5)
        if self.test.find_byid(clock_set_time_simulation) is None:
            self.Case.fail(f'设定闹钟的 模拟时钟 刻度盘未显示')
        if TimeUtils.is_AM():
            self.test.find_byid(clock_set_time_am).click()
        else:
            self.test.find_byid(clock_set_time_pm).click()
        self.test.find_byid(clock_set_time_mode).click()
        time.sleep(0.2)
        self.test.find_byid(clock_set_time_hour).send_keys(
            TimeUtils.get_hour())
        self.test.find_byid(clock_set_time_minute).send_keys(
            TimeUtils.get_minute() + 2)
        self.test.find_byclass(Button, '确定').click()
        isFlga = False
        actions = TouchAction(self.driver)
        for x in range(122):

            actions.press(x=(self.test.get_windows_width() * 0.5),
                          y=(self.test.get_windows_height() *
                             0.15)).release().perform()

            tmp = self.test.find_byid(clock_set_alarm_state)
            if tmp is not None:
                locat = tmp.location

                actions.long_press(x=locat['x'], y=locat['y'])
                actions.move_to(x=(self.test.get_windows_width() * 0.9),
                                y=locat['y'])
                actions.release().perform()
                isFlga = True
                break

            time.sleep(1)
        self.driver.press_keycode(4, 0, 0)
        if not isFlga:
            self.Case.fail(f'闹钟在2分钟内未响,测试失败')
        self.Case.assertTrue(self.test.wait_if_activity(clock_activity),
                             '闹钟 关闭 失败,超时5秒未检测到主界面')
        time.sleep(1)

    def case_check_timer_input(self):
        if TestResult.getTestFail(self.failkey):
            self.Case.skipTest('case_if_base test fail, skip this')
        self.case_if_base(True)
        time.sleep(1)
        self.test.find_byacc('定时器').click()
        time.sleep(0.5)

        for x in range(10):
            self.test.find_byid(f'{clock_timer_x}{x}').click()
            time.sleep(0.1)
            tmp_time = self.test.find_byid(clock_show_timer).text
            if f'0{x}秒' not in tmp_time:
                self.Case.fail(f'定时器设定 {x} 秒失败')
            self.test.find_byid(clock_del_timer_time).click()
            time.sleep(0.2)

    def case_set_timer(self):
        if TestResult.getTestFail(self.failkey):
            self.Case.skipTest('case_if_base test fail, skip this')
        self.case_if_base(True)
        time.sleep(1)
        self.test.find_byacc('定时器').click()
        time.sleep(0.5)
        self.test.find_byid(clock_timer_6).click()
        tmp_time = self.test.find_byid(clock_show_timer).text
        if f'06秒' not in tmp_time:
            self.Case.fail(f'定时器设定 6 秒失败')
        self.test.find_byid(clock_start_timer).click()
        time.sleep(1)
        self.test.find_byid(clock_start_timer).click()
        time.sleep(1)
        text_time = self.test.find_byid(clock_show_timer_started).text
        try:
            if 6 > int(text_time) > 4:
                self.Case.fail(f'定时器计时失败,6秒计时器,剩余{text_time}')
        except ValueError:
            self.Case.fail(f'定时器显示失败,显示为:{text_time}')
        time.sleep(0.5)
        self.test.find_byid(clock_del_timer).click()
        time.sleep(0.5)
        self.Case.assertIsNone(self.test.find_byid(clock_start_timer),
                               '定时器未删除')
        time.sleep(1)

    def case_check_Stopwatch(self):
        if TestResult.getTestFail(self.failkey):
            self.Case.skipTest('case_if_base test fail, skip this')
        self.case_if_base(True)
        time.sleep(1)
        self.test.find_byacc('秒表').click()
        time.sleep(0.5)
        self.Case.assertIsNotNone(self.test.find_byid(clock_show_stopwatch),
                                  '秒表 计数盘 未显示')
        tmp = self.test.find_byid(clock_show_stopwatch_time)
        self.test.find_byid(clock_start_timer).click()
        time.sleep(3)
        self.test.find_byid(clock_start_timer).click()
        try:
            tmp_time = 0
            """
            for x in range(10):
                tmp = self.test.find_byid(clock_show_stopwatch_time)
                if tmp is not None:
                    tmp_time = int(tmp.text)
            """
            tmp_time = int(tmp.text)
            if tmp_time == 0:
                self.Case.fail(f'未获取到,秒表时间')
        except ValueError:
            self.Case.fail(f'秒表时间显示错误,计时约三秒,{tmp_time}')
        if tmp_time < 2.9:
            self.Case.fail(f'秒表时间显示错误,计时约三秒,未超过2.9秒:时间为:{tmp_time}')
        self.test.find_byacc('重置').click()
        time.sleep(1)

    def case_check_clock_UI_switch(self):
        if TestResult.getTestFail(self.failkey):
            self.Case.skipTest('case_if_base test fail, skip this')
        self.case_if_base(True)
        mode_list = self.test.find_list_byclass(TextView)
        for m in mode_list:
            str_tmp = m.text
            if '时钟' in str_tmp:
                m.click()
                time.sleep(1)
                break

        detail_clock = self.test.find_byid(clock_show_time)
        if detail_clock is None:
            self.Case.fail("未找到当前详细时间,进入的页面非时钟页面")
        cities = self.test.find_list_byclass(ImageButton)
        city_flag = False
        for city in cities:
            str_tmp = city.get_attribute('content-desc')
            if '城市' in str_tmp:
                city_flag = True
                break
        if not city_flag:
            self.Case.fail("未找到时区(城市)选择按钮,进入的页面非时钟页面")

        self.test.swipe_Right(600, 1)
        time.sleep(1)

        switch_list = self.test.find_list_byclass(Switch)
        if switch_list is None:
            alarm_list = self.test.find_list_byclass(TextView)
            alarm_flag = False
            for alarm in alarm_list:
                str_tmp = alarm.text
                if '没有闹钟' in str_tmp:
                    alarm_flag = True
                    break
            if not alarm_flag:
                self.Case.fail("未找到闹钟和没有闹钟提示,进入的页面非闹钟页面")

        add_list = self.test.find_list_byclass(ImageButton)
        add_flag = False
        for add in add_list:
            str_tmp = add.get_attribute('content-desc')
            if '添加闹钟' in str_tmp:
                add_flag = True
                break
        if not add_flag:
            self.Case.fail("未找到添加闹钟的按钮,切换的页面非闹钟页面")

        self.test.swipe_Left(600, 1)
        time.sleep(1)
        self.test.swipe_Left(600, 1)
        time.sleep(1)

        timer_text = self.test.find_byid(clock_show_timer)
        if timer_text is None:
            self.Case.fail("未找到定时器时刻表,切换的页面非定时器页面")
        del_list = self.test.find_list_byclass(ImageButton)
        del_flag = False
        for d in del_list:
            str_tmp = d.get_attribute('content-desc')
            if '删除' in str_tmp:
                del_flag = True
                break
        if not del_flag:
            self.Case.fail("未找到定时器删除按钮,切换的页面非定时器页面")

        self.test.swipe_Left(600, 1)
        time.sleep(1)

        stopwatch_veiw = self.test.find_byid(clock_stopwatch_veiw)
        if stopwatch_veiw is None:
            self.Case.fail("未找到秒表面板,切换的为非秒表页面")
        start_stop_button_list = self.test.find_list_byclass(ImageButton)
        start_flag = False
        for s in start_stop_button_list:
            str_tmp = s.get_attribute('content-desc')
            if '开始' in str_tmp:
                start_flag = True
                break
        if not start_flag:
            self.Case.fail("未找到秒表开始计时的按钮,切换的为非秒表页面")

    def case_clock_set_city_time(self):
        if TestResult.getTestFail(self.failkey):
            self.Case.skipTest('case_if_base test fail, skip this')
        self.case_if_base(True)
        mode_list = self.test.find_list_byclass(TextView)
        for m in mode_list:
            str_tmp = m.text
            if '时钟' in str_tmp:
                m.click()
                time.sleep(1)
                break
        city_button = self.test.find_list_byclass(ImageButton)
        city_flag = False
        for city in city_button:
            str_tmp = city.get_attribute('content-desc')
            if '城市' in str_tmp:
                city.click()
                time.sleep(2)
                city_flag = True
                break
        if not city_flag:
            self.Case.fail("未找到城市按钮,确认当前页面为时钟页面")

        city_check_list = self.test.find_list_byclass(CheckBox)

        for city in city_check_list:
            str_tmp = city.get_attribute('content-desc')
            if '阿比让' in str_tmp:
                city.click()
                time.sleep(1)
                break
        back_list = self.test.find_list_byclass(ImageButton)
        for back in back_list:
            str_tmp = back.get_attribute('content-desc')
            if '转到上一层级' in str_tmp:
                back.click()
                time.sleep(2)
                break
        textview_list = self.test.find_list_byclass(TextView)
        city_flag = False
        for t in textview_list:
            str_tmp = t.text
            if '阿比让' in str_tmp:
                city_flag = True
                break
        if not city_flag:
            self.Case.fail("未找到选中的城市")

        city_button = self.test.find_list_byclass(ImageButton)
        city_flag = False
        for city in city_button:
            str_tmp = city.get_attribute('content-desc')
            if '城市' in str_tmp:
                city.click()
                time.sleep(2)
                city_flag = True
                break
        if not city_flag:
            self.Case.fail("未找到城市按钮,确认当前页面为时钟页面")
        city_check_list = self.test.find_list_byclass(CheckBox)
        for city in city_check_list:
            str_tmp = city.get_attribute('content-desc')
            if '阿比让' in str_tmp:
                city.click()
                time.sleep(1)
                break
        back_list = self.test.find_list_byclass(ImageButton)
        for back in back_list:
            str_tmp = back.get_attribute('content-desc')
            if '转到上一层级' in str_tmp:
                back.click()
                time.sleep(2)
                break

    def case_back_and_home_out_of_clock(self):
        if TestResult.getTestFail(self.failkey):
            self.Case.skipTest('case_if_base test fail, skip this')
        self.case_if_base(True)
        mode_list = self.test.find_list_byclass(TextView)
        for m in mode_list:
            str_tmp = m.text
            if '时钟' in str_tmp:
                m.click()
                time.sleep(1)
                break
        self.driver.press_keycode(KEY_BACK, 0, 0)
        time.sleep(1)
        if self.test.wait_if_activity(clock_activity):
            self.Case.fail("在时钟界面按返回键无法退出界面")
        else:
            self.case_if_base(True)
            self.driver.press_keycode(KEY_HOME, 0, 0)
            time.sleep(1)
            if self.test.wait_if_activity(clock_activity):
                self.Case.fail("在时钟界面按HOME按钮无法退出界面")

    def case_preview_and_play_timer_sounds(self):
        if TestResult.getTestFail(self.failkey):
            self.Case.skipTest('case_if_base test fail, skip this')
        self.case_if_base(True)
        mode_list = self.test.find_list_byclass(TextView)
        for m in mode_list:
            str_tmp = m.text
            if '定时器' in str_tmp:
                m.click()
                time.sleep(1)
                break
        more_list = self.test.find_list_byclass(ImageView)
        for more in more_list:
            str_tmp = more.get_attribute('content-desc')
            if '更多选项' in str_tmp:
                more.click()
                time.sleep(1)
                break
        set_list = self.test.find_list_byclass(TextView)
        for s in set_list:
            str_tmp = s.text
            if '设置' in str_tmp:
                s.click()
                time.sleep(1)
                break
        for i in range(3):
            self.test.swipe_Down(600, 1)
            time.sleep(0.1)
        setting_list = self.test.find_list_byclass(TextView)
        for sets in setting_list:
            str_tmp = sets.text
            if '定时器提示音' in str_tmp:
                sets.click()
                time.sleep(3)
                break

        sounds_list = self.test.find_list_byclass(TextView)
        sound_flag = False
        for sound in sounds_list:
            str_tmp = sound.text
            if '静音' in str_tmp:
                sound.click()
                time.sleep(2)
                sound_flag = True
                continue
            if sound_flag:
                sound.click()
                time.sleep(2)
        for i in range(3):
            self.test.swipe_Down(600, 1)
            time.sleep(0.2)
        sound_list = self.test.find_list_byclass(TextView)
        for s in sound_list:
            s.click()
            time.sleep(2)
        if not sound_flag:
            self.Case.fail("未找到任何铃声")

    def case_set_and_check_timer_sound(self):
        if TestResult.getTestFail(self.failkey):
            self.Case.skipTest('case_if_base test fail, skip this')
        self.case_if_base(True)
        mode_list = self.test.find_list_byclass(TextView)
        for m in mode_list:
            str_tmp = m.text
            if '定时器' in str_tmp:
                m.click()
                time.sleep(1)
                break
        more_list = self.test.find_list_byclass(ImageView)
        for more in more_list:
            str_tmp = more.get_attribute('content-desc')
            if '更多选项' in str_tmp:
                more.click()
                time.sleep(1)
                break
        set_list = self.test.find_list_byclass(TextView)
        for s in set_list:
            str_tmp = s.text
            if '设置' in str_tmp:
                s.click()
                time.sleep(1)
                break
        for i in range(3):
            self.test.swipe_Down(600, 1)
            time.sleep(0.1)
        setting_list = self.test.find_list_byclass(TextView)
        for sets in setting_list:
            str_tmp = sets.text
            if '定时器提示音' in str_tmp:
                sets.click()
                time.sleep(3)
                break
        sounds_list = self.test.find_list_byclass(TextView)
        for sound in sounds_list:
            str_tmp = sound.text
            if 'Argon' in str_tmp:
                sound.click()
                time.sleep(2)
                break
        back_list = self.test.find_list_byclass(ImageButton)
        for back in back_list:
            str_tmp = back.get_attribute('content-desc')
            if '转到上一层级' in str_tmp:
                back.click()
                time.sleep(1)
                break
        setting_list = self.test.find_list_byclass(TextView)
        sound_check = False
        for sets in setting_list:
            str_tmp = sets.text
            if 'Argon' in str_tmp:
                sound_check = True
                break
        if not sound_check:
            self.Case.fail("定时器提示音设置失败")
        back_list = self.test.find_list_byclass(ImageButton)
        for back in back_list:
            str_tmp = back.get_attribute('content-desc')
            if '转到上一层级' in str_tmp:
                back.click()
                time.sleep(1)
                break
        self.test.find_byid(clock_timer_6).click()
        time.sleep(1)
        image_list = self.test.find_list_byclass(ImageButton)
        for i in image_list:
            str_tmp = i.get_attribute('content-desc')
            if '开始' in str_tmp:
                i.click()
                time.sleep(2)
                break
        for i in range(5):
            time.sleep(3)
        button_list = self.test.find_list_byclass(Button)
        for b in button_list:
            str_tmp = b.text
            if '删除' in str_tmp:
                b.click()
                time.sleep(2)
                break
        if self.test.find_byid(clock_show_timer) is None:
            self.Case.fail("删除定时器失败")

    def case_timer_add_one_minute_check(self):
        if TestResult.getTestFail(self.failkey):
            self.Case.skipTest('case_if_base test fail, skip this')
        self.case_if_base(True)
        mode_list = self.test.find_list_byclass(TextView)
        for m in mode_list:
            str_tmp = m.text
            if '定时器' in str_tmp:
                m.click()
                time.sleep(1)
                break
        one_button = self.test.find_byid(clock_timer_1)
        for i in range(6):
            one_button.click()
            time.sleep(1)
        for i in range(4):
            self.test.find_byid(clock_del_timer_time).click()
            time.sleep(1)
        image_list = self.test.find_list_byclass(ImageButton)
        for i in image_list:
            str_tmp = i.get_attribute('content-desc')
            if '开始' in str_tmp:
                i.click()
                time.sleep(2)
                break
        add_list = self.test.find_list_byclass(Button)
        for adds in add_list:
            str_tmp = adds.text
            if '+1:00' in str_tmp:
                adds.click()
                time.sleep(1)
                break
        button_list = self.test.find_list_byclass(Button)
        for b in button_list:
            str_tmp = b.text
            if '删除' in str_tmp:
                b.click()
                time.sleep(2)
                break
Exemple #2
0
class Camera_CaseMethod:
    def __init__(self, dev, failkey):
        self.driver = dev
        self.test = Action(self.driver)
        self.Case = TestCase()
        self.failkey = failkey

    def case_if_base(self):
        """检查是否可以正常启动"""
        self.driver.activate_app(cam_Pkg)
        camHelpOk = self.test.find_byid(cam_help_ok)
        if camHelpOk is not None:
            camHelpOk.click()
        if self.driver.current_activity != cam_Activity:
            self.Case.assertTrue(self.test.wait_if_activity(cam_Launcher),
                                 '启动相机失败,超时5秒未检测到主界面')
        else:
            self.Case.assertTrue(self.test.wait_if_activity(cam_Activity),
                                 '启动相机失败,超时5秒未检测到主界面')
        time.sleep(1)

    def case_take_a_picture(self):
        if TestResult.getTestFail(self.failkey):
            self.skipTest('case_base test fail, skip this')
        self.driver.activate_app(cam_Pkg)
        self.Case.assertTrue(self.test.wait_if_activity(cam_Launcher),
                             '启动相机失败,超时5秒未检测到主界面')
        time.sleep(3)
        shutterButton = self.test.find_byid(shutter_button)
        shutterButton.click()
        time.sleep(3)
        self.test.find_byid(cam_gallery_button).click()
        self.Case.assertTrue(
            self.test.wait_if_activity(gallery_activity, timeout=10),
            '打开照片预览失败,超时10秒未检测到主界面')
        time.sleep(1)
        actions = TouchAction(self.driver)
        actions.press(x=self.test.get_windows_width() / 2,
                      y=self.test.get_windows_height() /
                      2).release().perform()

    def case_back_front_take_a_picture(self):
        if TestResult.getTestFail(self.failkey):
            self.skipTest('case_base test fail, skip this')
        self.case_if_base()
        time.sleep(3)
        tmp_button = self.test.find_byid(cam_flash_button)
        if tmp_button is not None:
            shutterButton = self.test.find_byid(shutter_button)
            shutterButton.click()
            time.sleep(2)
            self.test.find_byid(cam_front_back_switcher).click()
            time.sleep(2)
        else:
            self.test.find_byid(cam_front_back_switcher).click()
            time.sleep(2)
            shutterButton = self.test.find_byid(shutter_button)
            shutterButton.click()
            time.sleep(2)
            self.test.find_byid(cam_front_back_switcher).click()
            time.sleep(2)
        tmp_button = self.test.find_byid(cam_flash_button)
        if tmp_button is not None:
            self.Case.assertFalse(self.test.check_element(tmp_button),
                                  '预期不符,非前摄界面')
        shutterButton = self.test.find_byid(shutter_button)
        shutterButton.click()
        time.sleep(2)
        self.test.find_byid(cam_front_back_switcher).click()
        time.sleep(2)
        tmp_button = self.test.find_byid(cam_flash_button)
        self.Case.assertTrue(self.test.check_element(tmp_button), '预期不符,非后摄界面')
        time.sleep(1)

    def case_take_a_video(self):
        if TestResult.getTestFail(self.failkey):
            self.skipTest('case_base test fail, skip this')
        self.case_if_base()
        time.sleep(3)
        tmp = self.test.find_list_byid(cam_mode_set, "录像")
        if tmp is None:
            self.test.find_list_byid(cam_mode_set, "视频").click()
        else:
            tmp.click()
        time.sleep(1)
        self.test.find_byid(cam_video_shutter_button).click()
        time.sleep(3)
        self.test.find_byid(shutter_button).click()
        time.sleep(1)
        self.test.find_byid(cam_video_pause).click()
        time.sleep(1)
        self.test.find_byid(cam_video_shutter_button).click()
        time.sleep(2)
        self.test.find_byid(cam_video_shutter_button).click()
        time.sleep(3)
        self.test.find_byid(cam_video_shutter_button).click()
        time.sleep(1)

    def case_back_front_take_a_video(self):
        if TestResult.getTestFail(self.failkey):
            self.skipTest('case_base test fail, skip this')
        self.case_if_base()
        time.sleep(3)
        tmp = self.test.find_list_byid(cam_mode_set, "录像")
        if tmp is None:
            self.test.find_list_byid(cam_mode_set, "视频").click()
        else:
            tmp.click()
        time.sleep(1)
        tmp_button = self.test.find_byid(cam_flash_button)
        if tmp_button is None:
            self.test.find_byid(cam_front_back_switcher).click()
            time.sleep(2)
        self.test.find_byid(cam_video_shutter_button).click()
        time.sleep(3)
        self.test.find_byid(cam_video_shutter_button).click()
        time.sleep(1)
        self.test.find_byid(cam_front_back_switcher).click()
        time.sleep(2)
        self.test.find_byid(cam_video_shutter_button).click()
        time.sleep(3)
        self.test.find_byid(cam_video_shutter_button).click()
        time.sleep(1)

    def case_into_camera_by_camera_button(self):
        if TestResult.getTestFail(self.failkey):
            self.skipTest('case_base test fail, skip this')
        self.case_if_base()
        self.driver.press_keycode(KEY_BACK, 0, 0)
        time.sleep(1)
        button_list = self.test.find_list_byclass(TextView)
        for b in button_list:
            str_tmp = b.text
            app_name = '骁龙相机'
            if app_name in str_tmp:
                b.click()
                time.sleep(3)
                break
        if not self.test.wait_if_activity(cam_Launcher):
            self.Case.fail("由相机快捷方式进入相机取景界面失败")

    def case_tack_landscape_photo(self):
        if TestResult.getTestFail(self.failkey):
            self.skipTest('case_base test fail, skip this')
        self.case_if_base()
        # TODO 设置为横屏
        # self.test.set_LANDSCAPE()

        time.sleep(1)
        tmp_button = self.test.find_byid(cam_flash_button)
        if tmp_button is not None:
            shutterButton = self.test.find_byid(shutter_button)
            shutterButton.click()
            time.sleep(2)
            self.driver.press_keycode(KEY_BACK, 0, 0)
            time.sleep(1)
            self.test.swipe_UP(600, 3)
            time.sleep(1)
            self.test.find_byid(cam_front_back_switcher).click()
            time.sleep(2)
        else:
            self.test.find_byid(cam_front_back_switcher).click()
            time.sleep(2)
            shutterButton = self.test.find_byid(shutter_button)
            shutterButton.click()
            time.sleep(2)
            self.test.find_byid(cam_front_back_switcher).click()
            time.sleep(2)
        tmp_button = self.test.find_byid(cam_flash_button)
        if tmp_button is not None:
            self.Case.assertFalse(self.test.check_element(tmp_button),
                                  '预期不符,非前摄界面')
        shutterButton = self.test.find_byid(shutter_button)
        shutterButton.click()
        time.sleep(2)
        self.test.find_byid(cam_front_back_switcher).click()
        time.sleep(2)
        tmp_button = self.test.find_byid(cam_flash_button)
        self.Case.assertTrue(self.test.check_element(tmp_button), '预期不符,非后摄界面')
        time.sleep(1)

    def case_use_flash_take_photo(self):
        if TestResult.getTestFail(self.failkey):
            self.skipTest('case_base test fail, skip this')
        self.case_if_base()
        sutterButton = self.test.find_byid(shutter_button)
        sutterButton.click()
        time.sleep(2)
        self.driver.press_keycode(KEY_BACK, 0, 0)
        self.test.swipe_Down(600, 1)
        time.sleep(1)

        photo_info = self._check_photo_info()
        if photo_info is not None:
            flash_status = '使用了闪光灯'
            flag = False
            for photo in photo_info:
                str_tmp = photo.text
                if flash_status in str_tmp:
                    flag = True
                    break
            if not flag:
                self.Case.fail("未开启闪光灯")
        else:
            self.Case.fail("未找到照片信息")

    def case_sleep_when_taking_photo(self):
        if TestResult.getTestFail(self.failkey):
            self.skipTest('case_base test fail, skip this')
        self.case_if_base()
        if self.test.wait_if_activity(cam_Launcher):
            self.driver.lock(3)
            if not self.test.wait_if_activity(cam_Launcher):
                self.Case.fail("设备休眠后唤醒,不在取景界面")

    def case_set_vedio_and_photo(self):
        if TestResult.getTestFail(self.failkey):
            self.skipTest('case_base test fail, skip this')
        self.case_if_base()
        mode_list = self.test.find_list_byclass(TextView)
        for mode in mode_list:
            str_tmp = mode.text
            if '录像' in str_tmp:
                mode.click()
                time.sleep(2)
                break
        vedio_shutter = self.test.find_byid(cam_video_shutter_button)
        vedio_shutter.click()
        time.sleep(3)
        vedio_shutter.click()
        time.sleep(3)
        self.driver.press_keycode(KEY_BACK, 0, 0)
        time.sleep(1)
        self.driver.press_keycode(KEY_BACK, 0, 0)
        time.sleep(1)
        for i in range(3):
            self.test.swipe_Down(600, 1)
        time.sleep(1)
        file_text = self._check_photo_info('.mp4').text
        if file_text is None:
            self.Case.fail("录像失败,未找到录像文件")

        self.driver.terminate_app(filemanager_pkg)
        app_list = self.test.find_list_byclass(TextView)
        for app in app_list:
            str_tmp = app.text
            if '骁龙相机' in str_tmp:
                app.click()
                time.sleep(3)
                break
        mode_list = self.test.find_list_byclass(TextView)
        for mode in mode_list:
            str_tmp = mode.text
            if '拍照' in str_tmp:
                mode.click()
                time.sleep(1)
                break
        shutterbutton = self.test.find_byid(shutter_button)
        shutterbutton.click()
        shut_time = self.driver.get_device_time("h")
        time.sleep(3)
        self.driver.press_keycode(KEY_BACK, 0, 0)
        time.sleep(2)
        for i in range(3):
            self.test.swipe_Down(600, 1)
        file_info_list = self._check_photo_info()
        file_flag = False
        if file_info_list is not None:
            for file_info in file_info_list:
                str_tmp = file_info.text
                if '时间' in str_tmp:
                    if shut_time in str_tmp:
                        file_flag = True
                        break
            if not file_flag:
                self.Case.fail("拍照后,未找到照片")

    def case_take_a_front_and_back_veido_and_play(self):
        if TestResult.getTestFail(self.failkey):
            self.skipTest('case_base test fail, skip this')
        self.case_if_base()
        mode_list = self.test.find_list_byclass(TextView)
        for mode in mode_list:
            str_tmp = mode.text
            if '录像' in str_tmp:
                mode.click()
                time.sleep(2)
                break
        vedio_shutter = self.test.find_byid(cam_video_shutter_button)
        vedio_shutter.click()
        time.sleep(3)
        vedio_shutter.click()
        time.sleep(1)
        switch_button = self.test.find_byid(cam_front_back_switcher)
        if switch_button is None:
            self.test.fail("未找到切换")
        switch_button.click()
        time.sleep(3)
        vedio_shutter.click()
        time.sleep(3)
        vedio_shutter.click()
        self.driver.press_keycode(KEY_BACK, 0, 0)
        time.sleep(1)
        self.driver.press_keycode(KEY_BACK, 0, 0)
        time.sleep(1)
        for i in range(3):
            self.test.swipe_Down(600, 1)
        time.sleep(1)
        file_name = self._check_photo_info('.mp4')
        file_name.click()
        time.sleep(3)

    def _check_photo_info(self, file_class='.jpg'):
        """检测拍照后的图片信息"""
        app_list = self.test.find_list_byclass(TextView)
        for a in app_list:
            str_tmp = a.text
            if '文件管理器' in str_tmp:
                a.click()
                time.sleep(2)
                break
        self.test.set_PORTRAIT()
        time.sleep(2)
        folder_list = self.test.find_list_byclass(TextView)
        for f in folder_list:
            str_tmp = f.text
            if 'DCIM' in str_tmp:
                f.click()
                time.sleep(3)
                break
        folder_second_list = self.test.find_list_byclass(TextView)
        for folder in folder_second_list:
            str_tmp = folder.text
            if 'Camera' in str_tmp:
                folder.click()
                time.sleep(3)
                break
        flie_list = self.test.find_list_byclass(TextView)
        for file in flie_list:
            str_tmp = file.text
            if file_class in str_tmp:
                if file_class == '.mp4':
                    return file
                else:
                    file.click()
                    time.sleep(3)
                    break
        more_flag = False
        while True:
            more_button = self.test.find_list_byclass(ImageButton)
            if more_button is None:
                actions = TouchAction(self.driver)
                actions.press(x=self.test.get_windows_width() / 2,
                              y=self.test.get_windows_height() /
                              2).release().perform()
                time.sleep(3)

            else:
                for more in more_button:
                    str_tmp = more.get_attribute('content-desc')
                    if '更多选项' in str_tmp:
                        more.click()
                        time.sleep(3)
                        break
                more_flag = True
                memu_list = self.test.find_list_byclass(TextView)
                for memu in memu_list:
                    str_tmp = memu.text
                    if '详细信息' in str_tmp:
                        memu.click()
                        time.sleep(3)
                        break
            if more_flag:
                break
        info_list = self.test.find_list_byclass(TextView)
        self.driver.terminate_app(cam_Pkg)
        return info_list
Exemple #3
0
class Doc_CaseMethod:
    def __init__(self, dev, failkey):
        self.driver = dev
        self.test = Action(self.driver)
        self.Case = TestCase()
        self.failkey = failkey
        self.new_name = TimeUtils.str_HMS_Name()

    def case_if_base(self, Skip=False):
        """设置基础,检查是否可以正常启动"""
        try:
            self.driver.activate_app(doc_pkg)
        except:
            self.test.start_activity(doc_pkg, doc_acivity)
        self.Case.assertTrue(self.test.wait_if_activity(doc_acivity),
                             '启动 文件管理器 失败,超时5秒未检测到主界面')
        self.test.set_PORTRAIT()
        time.sleep(1)

    def case_check_root_menu(self):
        self.case_if_base()
        self.test.find_byacc(doc_root_menu).click()
        time.sleep(0.2)
        tmp_list = self.test.find_byid_list(ID_title)
        isImages = False
        isVideos = False
        isAudio = False
        isRecent = False
        for x in tmp_list:
            t = x.text
            if '最近' in t:
                isRecent = True
                continue
            if '图片' in t:
                isImages = True
                continue
            if '视频' in t:
                isVideos = True
                continue
            if '音频' in t:
                isAudio = True
                continue
        if not isRecent or not isAudio or not isVideos or not isImages:
            self.Case.fail(
                f'文件菜单不满足:图片:{isImages},视频:{isVideos},音频:{isAudio},最近:{isRecent}'
            )
        time.sleep(1)

    def case_new_and_del_folder(self):
        self.case_if_base()
        self.test.find_byacc(Menu).click()
        time.sleep(0.2)
        tmp_list = self.test.find_byid_list(doc_action_menu)
        for x in tmp_list:
            t = x.text
            if '新建文件夹' in t:
                x.click()
                time.sleep(0.5)
                break
        tmp_list = self.test.find_list_byclass(Edit_Text)
        if tmp_list is None:
            self.Case.fail('文件夹名称输入框不存在')
        tmp_list[0].clear()
        tmp_list[0].send_keys(f'doc_{self.new_name}')
        tmp_list = self.test.find_byclass(Button, '确定').click()
        time.sleep(0.3)
        tmp_list = self.test.find_byid_list(ID_title)
        isNew = False
        touchAction = TouchAction(self.driver)
        for y in tmp_list:
            t = y.text
            if f'doc_{self.new_name}' in t:
                isNew = True
                touchAction.long_press(y)
                time.sleep(1.5)
                touchAction.release().perform()
                break
        if not isNew:
            self.Case.fail(f'文件夹不存在:[doc_{self.new_name}]')
        self.test.find_byid(doc_search_and_del).click()
        time.sleep(0.3)
        self.test.find_byclass(Button, '确定').click()
        time.sleep(1)
        tmp_list = self.test.find_byid_list(ID_title)
        if tmp_list is None:
            return
        for z in tmp_list:
            t = z.text
            if f'doc_{self.new_name}' in t:
                self.Case.fail(f'doc_{self.new_name},未删除')
        time.sleep(1)

    def case_new_and_change_folder(self):
        self.case_if_base()
        self.test.find_byacc(Menu).click()
        time.sleep(0.2)
        tmp_list = self.test.find_byid_list(doc_action_menu)
        for x in tmp_list:
            t = x.text
            if '新建文件夹' in t:
                x.click()
                time.sleep(0.5)
                break
        tmp_list = self.test.find_list_byclass(Edit_Text)
        if tmp_list is None:
            self.Case.fail('文件夹名称输入框不存在')
        tmp_list[0].clear()
        tmp_list[0].send_keys(f'doc_new_{self.new_name}')
        tmp_list = self.test.find_byclass(Button, '确定').click()
        time.sleep(0.3)
        tmp_list = self.test.find_byid_list(ID_title)
        isNew = False
        touchAction = TouchAction(self.driver)
        for y in tmp_list:
            t = y.text
            if f'doc_new_{self.new_name}' in t:
                isNew = True
                touchAction.long_press(y)
                time.sleep(1.5)
                touchAction.release().perform()
                break
        if not isNew:
            self.Case.fail(f'文件夹不存在:[doc_new_{self.new_name}]')

        self.test.find_byacc(Menu).click()
        time.sleep(0.2)
        tmp_list = self.test.find_byid_list(doc_action_menu)
        for x in tmp_list:
            t = x.text
            if '重命名' in t:
                x.click()
                time.sleep(0.5)
                break
        tmp_list = self.test.find_list_byclass(Edit_Text)
        if tmp_list is None:
            self.Case.fail('文件夹名称输入框不存在')

        tmp_list[0].clear()
        tmp_list[0].send_keys(f'doc_old_{self.new_name}')
        tmp_list = self.test.find_byclass(Button, '确定').click()
        time.sleep(0.3)
        tmp_list = self.test.find_byid_list(ID_title)
        isNew = False
        for y in tmp_list:
            t = y.text
            if f'doc_old_{self.new_name}' in t:
                isNew = True
                break
        if not isNew:
            self.Case.fail(f'文件夹不存在:[doc_old_{self.new_name}]')
        time.sleep(1)

    def case_del_music(self):
        self.case_if_base()
        self.test.find_byacc(doc_root_menu).click()
        time.sleep(0.2)
        tmp_list = self.test.find_byid_list(ID_title)
        for x in tmp_list:
            t = x.text
            if '音频' in t:
                x.click()
                time.sleep(0.5)
                break

        tmp_list = self.test.find_byid_list(ID_title)
        touchAction = TouchAction(self.driver)
        isNew = False
        for y in tmp_list:
            t = y.text
            if f'张含韵' in t:
                isNew = True
                y.click()
                time.sleep(1)
                break
        if not isNew:
            self.Case.fail(f"未找到相关歌曲文件: 张含韵")

        tmp_list = self.test.find_byid_list(ID_title)
        for z in tmp_list:
            t = z.text
            if f'歌曲' in t:
                z.click()
                time.sleep(1)
                break

        tmp_list = self.test.find_byid_list(ID_title)
        for g in tmp_list:
            t = g.text
            if f'doc_music' in t:
                touchAction.long_press(g)
                time.sleep(1.5)
                touchAction.release().perform()
                break
        time.sleep(0.5)

        self.test.find_byid(doc_search_and_del).click()
        time.sleep(0.3)
        self.test.find_byclass(Button, '确定').click()
        time.sleep(1)
        tmp_list = self.test.find_byid_list(ID_title)
        if tmp_list is None:
            return
        for d in tmp_list:
            t = d.text
            if 'doc_music' in t:
                self.Case.fail(f'张含韵 music ,未删除')
        time.sleep(1)
Exemple #4
0
class FileManager_CaseMethod:
    def __init__(self, dev, failkey):
        self.driver = dev
        self.test = Action(self.driver)
        self.Case = TestCase()
        self.failkey = failkey
        self.new_name = TimeUtils.str_HMS_Name()

    def case_if_base(self, Skip=False):
        """设置基础,检查是否可以正常启动"""
        try:
            self.driver.activate_app(filemanager_pkg)
        except:
            self.test.start_activity(filemanager_pkg, filemanager_acivity)

        if not Skip:
            if self.test.wait_if_activity(Permissions_Activity):
                self.test.find_byid(Permission_allow_button).click()
                time.sleep(1)

        self.Case.assertTrue(self.test.wait_if_activity(filemanager_acivity),
                             '启动 文件管理器 失败,超时5秒未检测到主界面')
        self.test.set_PORTRAIT()
        time.sleep(1)

    def case_new_folder(self):
        self.case_if_base(True)
        self.test.find_byid(filemanager_action_menu).click()
        time.sleep(0.5)
        tme_list = self.test.find_list_byclass(TextView)
        for x in tme_list:
            tmp_text = x.text
            if '新建文件夹' in tmp_text:
                x.click()
                time.sleep(0.5)
                break
        tmp_edit = self.test.find_byid(filemanager_input_nanme_edit)
        tmp_edit.clear()
        tmp_edit.send_keys('A_new_test_meig')
        self.test.find_byclass(Button, '确定').click()
        time.sleep(1)
        self.Case.assertTrue(self._find_folder_or_file('A_new_test_meig'),
                             '未找到新建的文件夹 [A_new_test_meig]')

    def case_del_folder(self):
        self.case_if_base(True)
        if not self._find_folder_or_file('A_new_test_meig'):
            self.driver.terminate_app(filemanager_pkg)
            time.sleep(1)
            self.case_new_folder()
            time.sleep(1)
        tmp = self.test.find_list_byid(filemanager_list_name,
                                       'A_new_test_meig')
        touchAction = TouchAction(self.driver)
        touchAction.long_press(tmp)
        time.sleep(1.5)
        touchAction.release().perform()
        time.sleep(0.5)
        self._get_action('删除').click()
        time.sleep(0.5)
        tmp = self.test.find_byid(filemanager_action_menu_title).text
        if '确认删除' not in tmp:
            self.Case.fail('未显示 删除 确认对话框')
        self.test.find_byclass(Button, '是').click()
        time.sleep(1)
        self.Case.assertFalse(self._find_folder_or_file('A_new_test_meig'),
                              '未删除文件夹 [A_new_test_meig]')

    def case_change_folder(self):
        self.case_if_base(True)
        if not self._find_folder_or_file('A_new_test_meig'):
            self.driver.terminate_app(filemanager_pkg)
            time.sleep(1)
            self.case_new_folder()
            time.sleep(1)
        tmp = self.test.find_list_byid(filemanager_list_name,
                                       'A_new_test_meig')
        touchAction = TouchAction(self.driver)
        touchAction.long_press(tmp)
        time.sleep(1.5)
        touchAction.release().perform()
        time.sleep(0.5)
        self._get_action('重命名').click()
        time.sleep(0.5)
        tmp_edit = self.test.find_byid(filemanager_input_nanme_edit)
        tmp_edit.clear()
        tmp_edit.send_keys(f'A_new_{self.new_name}')
        self.test.find_byclass(Button, '确定').click()
        time.sleep(1)
        self.Case.assertTrue(
            self._find_folder_or_file(f'A_new_{self.new_name}'),
            f'未找到 重命名 的文件夹[A_new_{self.new_name}]')

    def case_check_file(self):
        self.case_if_base(True)
        tmp = self._find_folder_or_file('text_test.txt')  #text_test.txt
        if not tmp:
            self.Case.fail('未找到 [text_test.txt]')
        tmp = self.test.find_list_byid(filemanager_list_name, 'text_test.txt')
        tmp.click()
        self.Case.assertTrue(self.test.wait_if_activity(HTML_Activity),
                             '文本编辑器未打开')
        time.sleep(1)
        isPass = False
        for x in range(5):
            if self.test.find_byclass(View, '1234567890abc') is not None:
                time.sleep(0.5)
                isPass = True
                break
        if not isPass:
            self.Case.fail('未找到 文本内容 [1234567890abc]')
        self.driver.terminate_app(HTML_pkg)
        time.sleep(1)

    def case_change_name_file(self):
        self.case_if_base(True)
        tmp = self._find_folder_or_file('text_test.txt')  #text_test.txt
        if not tmp:
            self.Case.fail('未找到 [text_test.txt]')
        tmp = self.test.find_list_byid(filemanager_list_name, 'text_test.txt')
        touchAction = TouchAction(self.driver)
        touchAction.long_press(tmp)
        time.sleep(1.5)
        touchAction.release().perform()
        time.sleep(0.5)
        self._get_action('重命名').click()
        time.sleep(0.5)
        tmp_edit = self.test.find_byid(filemanager_input_nanme_edit)
        tmp_edit.clear()
        tmp_edit.send_keys(f'text_test_{self.new_name}.txt')
        self.test.find_byclass(Button, '确定').click()
        time.sleep(1)
        self.Case.assertTrue(
            self._find_folder_or_file(f'text_test_{self.new_name}.txt'),
            f'未找到 重命名 的文件夹[text_test_{self.new_name}.txt]')

    def case_new_del_file(self):
        self.case_if_base(True)
        self.test.find_byid(filemanager_action_menu).click()
        time.sleep(0.5)
        tme_list = self.test.find_list_byclass(TextView)
        for x in tme_list:
            tmp_text = x.text
            if '新建文件' == tmp_text:
                x.click()
                time.sleep(0.5)
                break
        tmp_edit = self.test.find_byid(filemanager_input_nanme_edit)
        tmp_edit.clear()
        tmp_edit.send_keys(f'A_new_file_{self.new_name}')
        self.test.find_byclass(Button, '确定').click()
        time.sleep(1)
        self.Case.assertTrue(
            self._find_folder_or_file(f'A_new_file_{self.new_name}'),
            f'未找到新建的文件夹 [A_new_file_{self.new_name}]')
        tmp = self._find_folder_or_file(
            f'A_new_file_{self.new_name}')  #text_test.txt
        if not tmp:
            self.Case.fail(f'未找到 [A_new_file_{self.new_name}]')
        tmp = self.test.find_list_byid(filemanager_list_name,
                                       f'A_new_file_{self.new_name}')
        touchAction = TouchAction(self.driver)
        touchAction.long_press(tmp)
        time.sleep(1.5)
        touchAction.release().perform()
        time.sleep(0.5)
        self._get_action('删除').click()
        time.sleep(0.5)
        tmp = self.test.find_byid(filemanager_action_menu_title).text
        if '确认删除' not in tmp:
            self.Case.fail('未显示 删除 确认对话框')
        self.test.find_byclass(Button, '是').click()
        time.sleep(1)
        self.Case.assertFalse(
            self._find_folder_or_file(f'A_new_file_{self.new_name}'),
            f'未删除文件夹 [A_new_file_{self.new_name}]')

    def case_set_sort(self):
        self.case_if_base(True)
        time.sleep(0.5)
        self.test.find_byacc(filemanager_root_menu).click()
        time.sleep(0.5)
        self.test.find_byid(filemanager_settings).click()
        self.Case.assertTrue(
            self.test.wait_if_activity(filemanager_settings_acivity),
            '未打开设置界面')
        time.sleep(1)
        tmp_list = self.test.find_list_byid(ID_title, '常规设置').click()
        time.sleep(1)
        tmp_checkbox = self.test.find_list_byclass(CheckBox)
        tmp_y, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox)
        self._get_setting_menu('排列时区分大小写').click()
        time.sleep(0.5)
        tmp_checkbox = self.test.find_list_byclass(CheckBox)
        tmp_x, x_1 = self._get_checkbox_isTrue_number(tmp_checkbox)
        if tmp_y == tmp_x:
            self.Case.fail('[排列时区区分大小写] ,设置失败')
        time.sleep(0.5)

    def case_set_Folder_statistics(self):
        self.case_if_base(True)
        time.sleep(0.5)
        self.test.find_byacc(filemanager_root_menu).click()
        time.sleep(0.5)
        self.test.find_byid(filemanager_settings).click()
        self.Case.assertTrue(
            self.test.wait_if_activity(filemanager_settings_acivity),
            '未打开设置界面')
        time.sleep(1)
        tmp_list = self.test.find_list_byid(ID_title, '常规设置').click()
        time.sleep(1)
        tmp_checkbox = self.test.find_list_byclass(CheckBox)
        tmp_y, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox)
        self._get_setting_menu('计算文件夹统计数据').click()
        time.sleep(2)
        tmp_checkbox = self.test.find_list_byclass(CheckBox)
        tmp_x, x_1 = self._get_checkbox_isTrue_number(tmp_checkbox)
        if tmp_y == tmp_x:
            if x_1 == y_1:
                self.Case.fail('[计算文件夹统计数据] ,设置失败')
        time.sleep(0.5)

    def case_set_preview(self):
        self.case_if_base(True)
        time.sleep(0.5)
        self.test.find_byacc(filemanager_root_menu).click()
        time.sleep(0.5)
        self.test.find_byid(filemanager_settings).click()
        self.Case.assertTrue(
            self.test.wait_if_activity(filemanager_settings_acivity),
            '未打开设置界面')
        time.sleep(1)
        tmp_list = self.test.find_list_byid(ID_title, '常规设置').click()
        time.sleep(1)
        tmp_checkbox = self.test.find_list_byclass(CheckBox)
        tmp_y, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox)
        self._get_setting_menu('预览').click()
        time.sleep(0.5)
        tmp_checkbox = self.test.find_list_byclass(CheckBox)
        tmp_x, x_1 = self._get_checkbox_isTrue_number(tmp_checkbox)
        if tmp_y == tmp_x:
            self.Case.fail('[预览] ,设置失败')
        time.sleep(0.5)

    def case_set_sub_user_Permission(self):
        self.case_if_base(True)
        time.sleep(0.5)
        self.test.find_byacc(filemanager_root_menu).click()
        time.sleep(0.5)
        self.test.find_byid(filemanager_settings).click()
        self.Case.assertTrue(
            self.test.wait_if_activity(filemanager_settings_acivity),
            '未打开设置界面')
        time.sleep(1)
        tmp_list = self.test.find_list_byid(ID_title, '常规设置').click()
        time.sleep(1)
        tmp_checkbox = self.test.find_list_byclass(CheckBox)
        tmp_y, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox)
        self._get_setting_menu('限制用户访问').click()
        time.sleep(0.5)
        tmp_checkbox = self.test.find_list_byclass(CheckBox)
        tmp_x, x_1 = self._get_checkbox_isTrue_number(tmp_checkbox)
        if tmp_y == tmp_x:
            self.Case.fail('[限制用户访问] ,设置失败')
        time.sleep(0.5)

    def case_set_save_log(self):
        self.case_if_base(True)
        time.sleep(0.5)
        self.test.find_byacc(filemanager_root_menu).click()
        time.sleep(0.5)
        self.test.find_byid(filemanager_settings).click()
        self.Case.assertTrue(
            self.test.wait_if_activity(filemanager_settings_acivity),
            '未打开设置界面')
        time.sleep(1)
        tmp_list = self.test.find_list_byid(ID_title, '常规设置').click()
        time.sleep(1)
        tmp_checkbox = self.test.find_list_byclass(CheckBox)
        tmp_y, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox)
        tmp = self._get_setting_menu('记录调试信息')
        if tmp is None:
            time.sleep(1)
            return
        tmp.click()
        time.sleep(0.5)
        tmp_checkbox = self.test.find_list_byclass(CheckBox)
        tmp_x, x_1 = self._get_checkbox_isTrue_number(tmp_checkbox)
        if tmp_y == tmp_x:
            self.Case.fail('[记录调试信息] ,设置失败')
        time.sleep(0.5)

    def case_set_swipe_del(self):
        self.case_if_base(True)
        time.sleep(0.5)
        self.test.find_byacc(filemanager_root_menu).click()
        time.sleep(0.5)
        self.test.find_byid(filemanager_settings).click()
        self.Case.assertTrue(
            self.test.wait_if_activity(filemanager_settings_acivity),
            '未打开设置界面')
        time.sleep(1)
        tmp_list = self.test.find_list_byid(ID_title, '常规设置').click()
        time.sleep(1)
        tmp_checkbox = self.test.find_list_byclass(CheckBox)
        tmp_y, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox)
        tmp = self._get_setting_menu('使用滑动手势')
        tmp.click()
        time.sleep(0.5)
        tmp_checkbox = self.test.find_list_byclass(CheckBox)
        tmp_x, x_1 = self._get_checkbox_isTrue_number(tmp_checkbox)
        if tmp_x <= tmp_y:
            self._get_setting_menu('使用滑动手势').click()
            time.sleep(0.5)
            tmp_checkbox = self.test.find_list_byclass(CheckBox)
            tmp_x, x_1 = self._get_checkbox_isTrue_number(tmp_checkbox)
            if tmp_x < tmp_y:
                self.Case.fail('[使用滑动手势] ,设置失败')
        time.sleep(1)

    def case_set_time_format(self):
        self.case_if_base(True)
        time.sleep(0.5)
        self.test.find_byacc(filemanager_root_menu).click()
        time.sleep(0.5)
        self.test.find_byid(filemanager_settings).click()
        self.Case.assertTrue(
            self.test.wait_if_activity(filemanager_settings_acivity),
            '未打开设置界面')
        time.sleep(1)
        tmp_list = self.test.find_list_byid(ID_title, '常规设置').click()
        time.sleep(1)
        t = ''
        for x in range(3):
            tmp = self._get_setting_menu('日期格式')
            tmp.click()
            time.sleep(0.5)
            if x == 0:
                t = '系统指定'
            elif x == 1:
                t = '日/月/年'
            else:
                t = '年-月-日'
            self.test.find_byclass(CheckedTextView, t).click()
            time.sleep(0.5)
        self.driver.press_keycode(KEY_BACK, 0, 0)
        time.sleep(1)
        self.driver.press_keycode(KEY_BACK, 0, 0)
        time.sleep(1)
        test_time = TimeUtils.strDATEName()
        tmp = self.test.find_list_byid(filemanager_item_sub_summary, test_time)
        self.Case.assertIsNotNone(tmp, '时间非 [年-月-日] 格式')
        time.sleep(1)

    def case_set_search_CheckBox(self):
        self.case_if_base(True)
        time.sleep(0.5)
        self.test.find_byacc(filemanager_root_menu).click()
        time.sleep(0.5)
        self.test.find_byid(filemanager_settings).click()
        self.Case.assertTrue(
            self.test.wait_if_activity(filemanager_settings_acivity),
            '未打开设置界面')
        time.sleep(1)
        tmp_list = self.test.find_list_byid(ID_title, '搜索选项').click()
        time.sleep(1)
        tmp_checkbox = self.test.find_list_byclass(CheckBox)
        tmp_1, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox)
        self._get_setting_menu('高亮').click()
        time.sleep(0.5)
        tmp_checkbox = self.test.find_list_byclass(CheckBox)
        tmp_2, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox)
        self._get_setting_menu('显示相关部件').click()
        time.sleep(0.5)
        tmp_checkbox = self.test.find_list_byclass(CheckBox)
        tmp_3, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox)
        self._get_setting_menu('保存关键').click()
        time.sleep(0.5)
        tmp_checkbox = self.test.find_list_byclass(CheckBox)
        tmp_4, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox)
        if tmp_1 != tmp_2 != tmp_3 != tmp_4:
            pass
        else:
            self.Case.fail(
                f'勾选框 设置失败:总计[{tmp_1}], 高亮 {tmp_2},显示相关部件 {tmp_3},保存关键字 {tmp_4}'
            )
        time.sleep(0.5)

    def case_set_search_del_keyword(self):
        self.case_if_base(True)
        time.sleep(0.5)
        self.test.find_byacc(filemanager_root_menu).click()
        time.sleep(0.5)
        self.test.find_byid(filemanager_settings).click()
        self.Case.assertTrue(
            self.test.wait_if_activity(filemanager_settings_acivity),
            '未打开设置界面')
        time.sleep(1)
        tmp_list = self.test.find_list_byid(ID_title, '搜索选项').click()
        time.sleep(1)
        tmp = self._get_setting_menu('删除保存的关键')
        if tmp.get_attribute('enabled') == "false":
            self._get_setting_menu('保存关键').click()
            time.sleep(0.5)
        self._get_setting_menu('删除保存的关键').click()
        self.test.if_toast_text('已删除所有搜索关键字')
        time.sleep(0.5)

    def case_set_search_result_sort(self):
        self.case_if_base(True)
        time.sleep(0.5)
        self.test.find_byacc(filemanager_root_menu).click()
        time.sleep(0.5)
        self.test.find_byid(filemanager_settings).click()
        self.Case.assertTrue(
            self.test.wait_if_activity(filemanager_settings_acivity),
            '未打开设置界面')
        time.sleep(1)
        tmp_list = self.test.find_list_byid(ID_title, '搜索选项').click()
        time.sleep(1)
        t = ''
        for x in range(3):
            tmp = self._get_setting_menu('搜索结果排列方式')
            tmp.click()
            time.sleep(0.5)
            if x == 0:
                t = '无序'
            elif x == 1:
                t = '按相关性'
            else:
                t = '按名称'
            self.test.find_byclass(CheckedTextView, t).click()
            time.sleep(0.5)
        tmp = self.test.find_list_byid(ID_summary, '按名称')
        self.Case.assertIsNotNone(tmp, '设置 [按名称] 失败')
        time.sleep(1)

    def case_edit_settings(self):
        self.case_if_base(True)
        time.sleep(0.5)
        self.test.find_byacc(filemanager_root_menu).click()
        time.sleep(0.5)
        self.test.find_byid(filemanager_settings).click()
        self.Case.assertTrue(
            self.test.wait_if_activity(filemanager_settings_acivity),
            '未打开设置界面')
        time.sleep(1)
        self.test.find_list_byid(ID_title, '编辑器选项').click()
        time.sleep(1)
        tmp = self._get_setting_menu('不显示建议')
        if tmp is None:
            self.Case.fail('编辑器界面未打开')
        tmp_list = self.test.find_list_byclass(CheckBox)
        isOpen = 0
        for y in tmp_list:
            bool = y.get_attribute('checked')
            if bool == 'true':
                isOpen += 1

        tmp_list = self.test.find_byid_list(ID_title)
        for x in tmp_list:
            tmp_text = x.text
            if "不显示建议" in tmp_text:
                x.click()
            if "自动换行" in tmp_text:
                x.click()
            if "二进制文件" in tmp_text:
                x.click()
            if "高亮语法" in tmp_text:
                x.click()
            time.sleep(1)
        tmp_list = self.test.find_list_byclass(CheckBox)
        isOpen1 = 0
        for z in tmp_list:
            bool = z.get_attribute('checked')
            if bool == 'true':
                isOpen1 += 1
        if isOpen1 == isOpen:
            self.Case.fail('编辑器选项子开光操作失败')
        time.sleep(1)

    def case_check_about_view(self):
        self.case_if_base(True)
        time.sleep(0.5)
        self.test.find_byacc(filemanager_root_menu).click()
        time.sleep(0.5)
        self.test.find_byid(filemanager_settings).click()
        self.Case.assertTrue(
            self.test.wait_if_activity(filemanager_settings_acivity),
            '未打开设置界面')
        time.sleep(1)
        self.test.find_list_byid(ID_title, '关于').click()
        time.sleep(1)
        tmp = None
        for x in range(3):
            tmp = self.test.find_byid(filemanager_dialog_title_text)
            if tmp is not None:
                break
            time.sleep(1)
        if tmp is None:
            self.Case.fail('关于界面未打开')

    def case_check_filesystem_info(self):
        self.case_if_base(True)
        time.sleep(0.5)
        self.test.find_byid(filemanager_filesystem_info).click()
        tmp = None
        for x in range(3):
            tmp = self.test.find_byid(filemanager_dialog_title_text)
            if tmp is not None:
                break
            time.sleep(1)
        if tmp is None:
            self.Case.fail('文件系统 界面未打开')
        tmp = self.test.find_byid(filemanager_filesystem_info_mount_point).text
        if "emulated" not in tmp:
            self.Case.fail("未检测到挂载点或者挂载点非{emulated}")
        self.test.find_byid(
            filemanager_filesystem_info_dialog_tab_disk_usage).click()
        time.sleep(1)
        tmp_total = self.test.find_byid(
            filemanager_filesystem_info_total_disk_usage).text
        tmp_used = self.test.find_byid(
            filemanager_filesystem_info_used_disk_usage).text
        tmp_free = self.test.find_byid(
            filemanager_filesystem_info_free_disk_usage).text
        try:
            tmp_total = re.search('[\d\\\.]+', tmp_total).group(0)
            tmp_used = re.search('[\d\\\.]+', tmp_used).group(0)
            tmp_free = re.search('[\d\\\.]+', tmp_free).group(0)
        except:
            self.Case.fail(
                f"正则匹配 空间大小数据失败,总共 {tmp_total}, 已使用 {tmp_used}, 剩余 {tmp_free}")
        try:
            if float(tmp_total) != (float(tmp_free) + float(tmp_used)):
                self.Case.fail(
                    f"使用空间计算错误,总共 {tmp_total}, 已使用 {tmp_used}, 剩余 {tmp_free}")
        except ValueError:
            self.Case.fail(
                f"使用空间计算错误 ValueError ,总共 {tmp_total}, 已使用 {tmp_used}, 剩余 {tmp_free}"
            )

    def case_set_sort_mode(self):
        self.case_if_base(True)
        time.sleep(0.5)
        for t in range(2):
            self.test.find_byid(filemanager_ab_configuration).click()
            tmp = None
            for x in range(3):
                tmp = self.test.find_byid(filemanager_ab_sort_mode)
                if tmp is not None:
                    break
                time.sleep(1)
            if tmp is None:
                self.Case.fail('未找到 排列方式 按钮')
            tmp.click()
            tmp = None
            for x in range(3):
                if t == 0:
                    tmp = self.test.find_list_byid(
                        filemanager_option_list_item_text, '按名称排列 ▼')
                else:
                    tmp = self.test.find_list_byid(
                        filemanager_option_list_item_text, '按名称排列 ▲')
                if tmp is not None:
                    break
                time.sleep(1)
            if tmp is None:
                self.Case.fail('未找到 排列方式 [按名称排列 ] 按钮')
            tmp.click()
            tmp = None
            for x in range(3):
                if t == 0:
                    tmp = self.test.find_list_byid(filemanager_list_name,
                                                   'storage')
                else:
                    tmp = self.test.find_list_byid(filemanager_list_name,
                                                   'Alarms')
                if tmp is not None:
                    break
                time.sleep(1)
            if tmp is None:
                if t == 0:
                    self.Case.fail('排列方式不正确,未按照字母表 降序')
                else:
                    self.Case.fail('排列方式不正确,未按照字母表 升序')

    def case_set_layout_mode(self):
        self.case_if_base(True)
        time.sleep(0.5)
        for t in range(2):
            self.test.find_byid(filemanager_ab_configuration).click()
            tmp = None
            for x in range(3):
                tmp = self.test.find_byid(filemanager_ab_layout_mode)
                if tmp is not None:
                    break
                time.sleep(1)
            if tmp is None:
                self.Case.fail('未找到 布局 按钮')
            tmp.click()
            tmp = None
            for x in range(3):
                if t == 0:
                    tmp = self.test.find_list_byid(
                        filemanager_option_list_item_text, '图标')
                else:
                    tmp = self.test.find_list_byid(
                        filemanager_option_list_item_text, '详细信息')
                if tmp is not None:
                    break
                time.sleep(1)
            if tmp is None:
                self.Case.fail('未找到 布局方式 按钮')
            tmp.click()
            time.sleep(1)

    def case_check_menu_list(self):
        self.case_if_base(True)
        time.sleep(0.5)
        self.test.find_byid(filemanager_action_menu).click()
        for x in range(3):
            if self.test.find_byid(filemanager_action_menu_title) is not None:
                break
            time.sleep(1)
        tmp = self.test.find_list_byclass(TextView)
        tmp_int = 0
        for x in tmp:
            tmp_text = x.text
            if "属性" == tmp_text:
                tmp_int += 1
            if "刷新" == tmp_text:
                tmp_int += 1
            if "新建文件夹" == tmp_text:
                tmp_int += 1
            if "新建文件" == tmp_text:
                tmp_int += 1
            if "全部选择" == tmp_text:
                tmp_int += 1
            if "取消全选" == tmp_text:
                tmp_int += 1
            if "添加到书签" == tmp_text:
                tmp_int += 1
            if "添加快捷方式" == tmp_text:
                tmp_int += 1
            if "设置为主页" == tmp_text:
                tmp_int += 1
            time.sleep(0.3)
        if tmp_int != 9:
            self.Case.fail(f'菜单不正确,没有9个,实际{tmp_int}')

    def case_check_file_info(self):
        self.case_if_base(True)
        tmp = self._find_folder_or_file('text_test_view.txt')  #text_test.txt
        if not tmp:
            self.Case.fail('未找到 [text_test_view.txt]')
        tmp = self.test.find_list_byid(filemanager_list_name,
                                       'text_test_view.txt')
        touchAction = TouchAction(self.driver)
        touchAction.long_press(el=tmp).release().perform()
        time.sleep(1)
        self._get_action("属性").click()
        tmp_int = 0
        for x in range(3):
            if self.test.find_byid(filemanager_action_menu_title) is not None:
                break
            time.sleep(1)
        tmp = self.test.find_list_byclass(TextView)
        for x in tmp:
            tmp_text = x.text
            if "text_test_view.txt" == tmp_text:
                tmp_int += 1
            if "text/plain" == tmp_text:
                tmp_int += 1
            if "文本" == tmp_text:
                tmp_int += 1
            time.sleep(0.4)
        if tmp_int != 3:
            self.Case.fail(
                f'文件名称、类型或者类别不正确,非  text_test_view.txt  text/plain  文本')

    def case_click_refresh(self):
        self.case_if_base(True)
        time.sleep(0.5)
        self.test.find_byid(filemanager_action_menu).click()
        for x in range(3):
            if self.test.find_byid(filemanager_action_menu_title) is not None:
                break
            time.sleep(1)
        self._get_action("刷新").click()
        time.sleep(1)

    def case_check_png(self):
        self.case_if_base(True)
        time.sleep(0.5)
        tmp = self._find_folder_or_file('picture_11.png')  #text_test.txt
        if not tmp:
            self.Case.fail('未找到 [picture_11.png]')
        tmp = self.test.find_list_byid(filemanager_list_name, 'picture_11.png')
        tmp.click()
        self.Case.assertTrue(self.test.wait_if_activity(gallery_activity),
                             "图片未打开")
        time.sleep(0.5)
        self.driver.press_keycode(KEY_BACK, 0, 0)
        self.Case.assertTrue(self.test.wait_if_activity(filemanager_acivity),
                             "未返回到文件管理器界面")
        time.sleep(0.5)

    def case_check_gif(self):
        self.case_if_base(True)
        time.sleep(0.5)
        tmp = self._find_folder_or_file('picture_12.gif')  #text_test.txt
        if not tmp:
            self.Case.fail('未找到 [picture_12.gif]')
        tmp = self.test.find_list_byid(filemanager_list_name, 'picture_12.gif')
        tmp.click()
        self.Case.assertTrue(self.test.wait_if_activity(gallery_activity),
                             "图片未打开")
        time.sleep(0.5)
        self.driver.press_keycode(KEY_BACK, 0, 0)
        self.Case.assertTrue(self.test.wait_if_activity(filemanager_acivity),
                             "未返回到文件管理器界面")
        time.sleep(0.5)

    def case_check_music(self):
        self.case_if_base(True)
        time.sleep(0.5)
        tmp = self._find_folder_or_file('music_')  #text_test.txt
        if not tmp:
            self.Case.fail('未找到 [music_]')
        tmp = self.test.find_list_byid(filemanager_list_name, 'music_')
        tmp.click()
        self.Case.assertTrue(
            self.test.wait_if_activity(
                music_video_music_AudioPreview_Activity), "播放音乐界面未打开")
        time.sleep(0.5)
        tmp = None
        for x in range(3):
            tmp = self.test.find_byid(music_video_music_progress)
            if tmp is not None:
                break
        self.Case.assertIsNotNone(tmp, '未检测到播放进度条')
        self.driver.press_keycode(KEY_BACK, 0, 0)
        self.Case.assertTrue(self.test.wait_if_activity(filemanager_acivity),
                             "未返回到文件管理器界面")
        time.sleep(0.5)

    def case_check_video(self):
        self.case_if_base(True)
        time.sleep(0.5)
        tmp = self._find_folder_or_file('video_')  #text_test.txt
        if not tmp:
            self.Case.fail('未找到 [video_]')
        tmp = self.test.find_list_byid(filemanager_list_name, 'video_')
        tmp.click()
        self.Case.assertTrue(
            self.test.wait_if_activity(music_video_Movie_acivity), "视频界面未打开")
        time.sleep(2)
        self.driver.press_keycode(KEY_BACK, 0, 0)
        self.Case.assertTrue(self.test.wait_if_activity(filemanager_acivity),
                             "未返回到文件管理器界面")
        time.sleep(0.5)

    def case_Bluetooth_share(self):
        self.case_if_base(True)
        time.sleep(0.5)
        tmp = self._find_folder_or_file('text_test_view.txt')  #text_test.txt
        if not tmp:
            self.Case.fail('未找到 [text_test_view.txt]')
        tmp = self.test.find_list_byid(filemanager_list_name,
                                       'text_test_view.txt')
        touchAction = TouchAction(self.driver)
        touchAction.long_press(el=tmp).release().perform()
        time.sleep(1)
        self._get_action("发送").click()
        tmp = None
        for x in range(3):
            tmp = self.test.find_list_byid(filemanager_associations_item_text,
                                           "蓝牙")
            if tmp is not None:
                break
            time.sleep(1)
        tmp.click()
        time.sleep(1)
        tmp = self.test.find_list_byid(filemanager_associations_item_text,
                                       "蓝牙")
        if tmp is not None:
            tmp.click()
        self.Case.assertTrue(self.test.wait_if_activity(Bluetooth_share),
                             '蓝牙分享界面未显示')
        tmp_list = None
        for x in range(5):
            tmp_list = self.test.find_byid_list(ID_title)
            tmp_int = len(tmp_list)
            if tmp_int > 4:
                break
            time.sleep(1)
        tmp_list[len(tmp_list) - 1].click()
        time.sleep(1)

    def _find_folder_or_file(self, textkey):
        for y in range(10):
            if self.test.find_list_byid(filemanager_list_name,
                                        textkey) is not None:
                return True
            self.test.swipe_Down(600, 1)
            time.sleep(0.3)
        return False

    def _get_action(self, keytext):
        tme_list = self.test.find_list_byclass(TextView)
        for x in tme_list:
            tmp_text = x.text
            if keytext in tmp_text:
                return x
        return None

    def _get_checkbox_isTrue_number(self, list_checkbox):
        y = 0
        for x in list_checkbox:
            if 'true' in x.get_attribute('checked'):
                y += 1
        return y, len(list_checkbox)

    def _get_setting_menu(self, keytext):
        for x in range(5):
            tmp = self.test.find_list_byid(ID_title, keytext)
            if tmp is not None:
                return tmp
            self.test.swipe_Down(600, 1)
            time.sleep(1)
        return None