コード例 #1
0
ファイル: TestLogin.py プロジェクト: lianghuiling/AppiumTest
class TestLogin(unittest.TestCase):
    # SetUp测试环境
    def setUp(self):
        '''获取driver对象,登录应用'''
        self._driver = Driver().get_driver
        self.__init_login_activity()


    #TearDown测试环境
    def tearDown(self):
        '''重置driver'''
        Driver().reset_driver()
         # 关闭当前session,仅供单条case测试使用,多条的时候注释掉此行
        Driver().close_driver()

    #初始化方法,进入我的班级页面
    def __init_login_activity(self):
        # 登录双师应用
        self._driver = Driver().get_driver()
        _ele_login_account = self._driver.find_element_by_id(RES.ID_ASSIST_LOGIN_ACCOUNT)
        _ele_login_password = self._driver.find_element_by_id(RES.ID_ASSIST_LOGIN_PASSWORD)
        _ele_login_denglu = self._driver.find_element_by_id(RES.ID_ASSIST_LOGIN_DENGLU)

        if _ele_login_account.text == "18211155659":
            _ele_login_denglu.click()
        else:
            _ele_login_account.send_keys("18211155659")
            _ele_login_password.send_keys("123456")
            _ele_login_denglu.click()

    def test_01(self):
        print "test11111111111111111111"
コード例 #2
0
    def find_all_student_list(self):
        '''
        找出所有学生列表
        :return:返回第一行学生信息
        '''
        work_list = Driver().get_driver().find_element_by_id('com.xes.drawpanel:id/student_ListView')
        work_list1 = work_list.find_elements_by_class_name('android.widget.LinearLayout')
        print len(work_list1)

        # work_list = Driver().get_driver().find_elements_by_android_uiautomator(
        #     "new UiSelector().className(\"android.widget.ListView\")"
        #     ".childSelector(new UiSelector().className(\"android.widget.LinearLayout\"))")
        return work_list1[0]
コード例 #3
0
class TestMyClass(unittest.TestCase):
    # SetUp测试环境
    def setUp(self):
        '''获取driver对象,进入被测页面'''
        self._driver = Driver().get_driver()
        self.__init_Login_activity()

    # TearDown测试环境
    def tearDown(self):
        # 重置driver,清空driver累积状态,供同时运行多条case使用
        Driver().reset_driver()
        # 关闭当前session,仅供单条case测试使用,多条的时候注释掉此行
        # Driver().close_driver()

    # 初始化方法,登录账户
    def __init_Login_activity(self):
        _driver = LRES.login_account()
        # 点击我的班级
        Driver().get_driver().find_element_by_id(RES.ID_CLASS).click()

    # C-11: 验证老师名字
    def test_11_TeacherName(self):
        _exp_teacher_name = RES.teacher_name
        _act_teacher_name = self._driver.find_element_by_id(RES.ID_TEACHER).text.encode('utf8')
        print _act_teacher_name
        assert _exp_teacher_name == _act_teacher_name, \
            '老师名字与期望不符,exp=%s, act=%s' % (_exp_teacher_name, _act_teacher_name)

    # C-12: 验证班级名字
    def test_12_ClassName(self):
        _exp_class_name = RES.class_name
        _act_class_name = self._driver.find_element_by_id(RES.ID_CLASS_NAME).text.encode('utf8')
        print _act_class_name
        assert _exp_class_name == _act_class_name, \
            '班级名字与期望不符,exp=%s, act=%s' % (_exp_class_name, _act_class_name)

    # C-13: 验证班级人数
    def test_13_StuNo(self):
        _exp_stu_no = RES.stu_no
        _act_stu_no = self._driver.find_element_by_id(RES.ID_STU_NO).text.encode('utf8')
        print _act_stu_no
        assert _exp_stu_no == _act_stu_no, \
            '班级人数与期望不符,exp=%s, act=%s' % (_exp_stu_no, _act_stu_no)
コード例 #4
0
ファイル: TestLogin.py プロジェクト: lianghuiling/AppiumTest
    def __init_login_activity(self):
        # 登录双师应用
        self._driver = Driver().get_driver()
        _ele_login_account = self._driver.find_element_by_id(RES.ID_ASSIST_LOGIN_ACCOUNT)
        _ele_login_password = self._driver.find_element_by_id(RES.ID_ASSIST_LOGIN_PASSWORD)
        _ele_login_denglu = self._driver.find_element_by_id(RES.ID_ASSIST_LOGIN_DENGLU)

        if _ele_login_account.text == "18211155659":
            _ele_login_denglu.click()
        else:
            _ele_login_account.send_keys("18211155659")
            _ele_login_password.send_keys("123456")
            _ele_login_denglu.click()
コード例 #5
0
 def click_submit_button(self):
     # 定义对号
     right_button = Driver().get_driver().find_element_by_id(RES.ID_RIGHT)
     # 定义提交按钮并点击
     submit_button = Driver().get_driver().find_element_by_id(RES.ID_SUBMIT)
     # 点击对号
     right_button.click()
     # 点击提交按钮
     submit_button.click()
コード例 #6
0
 def login_account(cls):
     driver = Driver().get_driver()
     __username = driver.find_element_by_id(RES.ID_LOGIN_USERNAME)
     # print 'username' + __username.text
     __pwd = driver.find_element_by_id(RES.ID_LOGIN_PASSED)
     # print 'pwd' + __pwd.text
     if __username.text == '输入账号. 正在编辑。':
         __username.send_keys(RES.USERNAME)
     if __pwd.text == 'Enter password.. 轻敲两次以编辑。':
         __pwd.send_keys(RES.PWD)
     driver.find_element_by_id(RES.ID_LOGIN_BUTTON).click()
     try:
         _ele_mywork = driver.find_element_by_name('我的工作')
         # print '登录成功'
     except:
         assert False, \
             '登录失败'
コード例 #7
0
ファイル: TestLogin.py プロジェクト: lianghuiling/AppiumTest
 def setUp(self):
     '''获取driver对象,登录应用'''
     self._driver = Driver().get_driver
     self.__init_login_activity()
コード例 #8
0
 def setUp(self):
     '''获取driver对象,进入被测页面'''
     self._driver = Driver().get_driver()
コード例 #9
0
class TestLogin(unittest.TestCase):
    # SetUp测试环境
    def setUp(self):
        '''获取driver对象,进入被测页面'''
        self._driver = Driver().get_driver()

    # TearDown测试环境
    def tearDown(self):
        '''重置driver'''
        Driver().reset_driver()

    # C-11: 验证登录用户名输入框中的文字
    def test_11_defaultTextOfLoginNameInput(self):
        _exp_username_text = '输入账号. 正在编辑。'
        _act_username_text = self._driver.find_element_by_id(RES.ID_LOGIN_USERNAME).text.encode('utf8')
        print _act_username_text
        assert _exp_username_text == _act_username_text, \
            '登录用户名输入框中的文字与设计不符,exp=%s, act=%s' % (_exp_username_text, _act_username_text)

    # C-12: 验证登录密码输入框中的文字
    def test_12_defaultTextOfLoginPwdInput(self):
        _exp_pwd_text = 'Enter password.. 轻敲两次以编辑。'
        _act_pwd_text = self._driver.find_element_by_id(RES.ID_LOGIN_PASSED).text.encode('utf8')
        print _act_pwd_text
        assert _exp_pwd_text == _act_pwd_text, \
            '登录密码输入框中的文字与设计不符,exp=%s, act=%s' % (_exp_pwd_text, _act_pwd_text)

    #C-13: 验证登录按钮上的文字
    def test_13_defaultTextOfLoginButtonText(self):
        _exp_Login_text = '登陆'
        _act_login_text = self._driver.find_element_by_id(RES.ID_LOGIN_BUTTON).text.encode('utf8')
        print _act_login_text
        assert _exp_Login_text == _act_login_text, \
            '登录按钮上的文字与设计不符,exp=%s, act=%s' % (_exp_Login_text, _act_login_text)

    #C-14: 验证版本号
    def test_14_defaultTextOfVersionText(self):
        _exp_version_text = RES.VERSION
        _act_version_text = self._driver.find_element_by_id(RES.ID_VERSION_NO).text.encode('utf8')
        print _act_version_text
        assert _exp_version_text == _act_version_text, \
            '版本号与期望不符,exp=%s, act=%s' % (_exp_version_text, _act_version_text)

    #C-15: 验证登录,输入用户名密码点登录
    def test_15_Login(self):
        self._driver.find_element_by_id(RES.ID_LOGIN_USERNAME).send_keys(RES.USERNAME)
        self._driver.find_element_by_id(RES.ID_LOGIN_PASSED).send_keys(RES.PWD)
        self._driver.find_element_by_id(RES.ID_LOGIN_BUTTON).click()
        try:
            _ele_mywork = self._driver.find_element_by_name("我的工作")
            print '登录成功'
        except:
            assert False, \
                '登录失败'
コード例 #10
0
 def setUp(self):
     '''获取driver对象,进入被测页面'''
     self._driver = Driver().get_driver()
     self.__init_drawpanel_activity()
コード例 #11
0
class TestDrawpanel(unittest.TestCase):
    # SetUp测试环境
    def setUp(self):
        '''获取driver对象,进入被测页面'''
        self._driver = Driver().get_driver()
        self.__init_drawpanel_activity()

    # TearDown测试环境
    def tearDown(self):
        # 重置driver,清空driver累积状态,供同时运行多条case使用
        Driver().reset_driver()
        # 关闭当前session,仅供单条case测试使用,多条的时候注释掉此行
        # Driver().close_driver()

    # 初始化方法,登录账户
    # 点击批改进入批改页面
    def __init_drawpanel_activity(self):
        _driver = LRES.login_account()
        WRES.find_and_click_draw_button()

    # C-11: 验证没有批改作业的时候学生名字显示
    # 期望是无学生
    def test_11_NoWork(self):
        _exp_student_name = u'无学生'
        _act_student_name = self._driver.find_element_by_id(RES.ID_STUDENT_NAME).text.encode('utf-8')
        print u'请查看没有待批改作业的批改截图:'
        # 给截图加上时间戳,防止重复命名的覆盖
        photo().take_screeshot()
        assert _exp_student_name == _act_student_name, \
            '期望的没作业时候的学生名字与设计不符,exp=%s, act=%s' % (_exp_student_name, _act_student_name)


    # C-12: 获取提交作业的学生情况,试卷情况并打印
    def test_12_ClickFeedBack(self):
        feed_back_button = self._driver.find_element_by_id(RES.ID_IS_FEEDBACK)
        print u'标记按钮初始内容为:' + feed_back_button.text.encode('utf-8')
        feed_back_button.click()
        _exp_feed_back_content = u'已标记'
        _act_feed_back_content = feed_back_button.text.encode('utf-8')
        print u'标记按钮初始内容为:' + _act_feed_back_content
        assert _exp_feed_back_content == _act_feed_back_content, \
            '期望的标记按钮名字与设计不符,exp=%s, act=%s' % (_exp_feed_back_content, _act_feed_back_content)

    # C-13: 获取提交作业的学生情况,试卷情况并打印
    def test_13_GetStudentInfoandPaperInfo(self):
        # 获取提交作业的学生姓名
        _act_student_name = self._driver.find_element_by_id(RES.ID_STUDENT_NAME).text.encode('utf-8')
        print u'提交作业的学生名字:' + _act_student_name
        # 获取提交作业的试卷名字
        _act_paper_name = self._driver.find_element_by_id(RES.ID_PAPER_NAME).text.encode('utf-8')
        print u'提交作业的试卷名字:' + _act_paper_name
        # 获取提交作业的试卷题号
        _act_question_no = self._driver.find_element_by_id(RES.ID_QUESTION_NO).text.encode('utf-8')
        print U'提交作业的试卷题号:' + _act_question_no
        # 截图
        photo().take_screeshot()

    # C-14: 点击提交按钮弹出分数选择框
    def test_14_ClickSubmitDialog(self):
        RES().click_submit_button()
        if findsomething().find_by_message(self._driver, u'1分', 2, 1):
            print u'点击提交后弹出框正确!'
        else:
            print u'点击提交后弹出框错误!'

    # C-15: 查看错题原因是否显示完全
    def test_15_CheckWrongReason(self):
        RES().click_submit_button()
        photo().take_screeshot()
        for reason in RES().wrong_list:
            if findsomething().find_by_message(self._driver, reason, 2, 1):
                print '错题原因' + reason + '存在'
            else:
                print '错题原因' + reason + '不存在'

    # C-16: 查看分数是否显示完全
    def test_16_CheckScoreList(self):
        RES().click_submit_button()
        for score in RES().score_list:
            if findsomething().find_by_message(self._driver, score, 2, 1):
                print '分数' + score + '存在'
            else:
                print '分数' + score + '不存在'

    # C-17: 查看确认取消是否显示完全
    def test_17_CheckButtonList(self):
        RES().click_submit_button()
        for button in RES().button_list:
            if findsomething().find_by_message(self._driver, button, 2, 1):
                print '按钮' + button + '存在'
            else:
                print '按钮' + button + '不存在'

    # C-18: 点击弹出框的取消按钮
    def test_18_ClickCancelButton(self):
        RES().click_submit_button()
        photo().take_screeshot()
        cancel_button = self._driver.find_element_by_id(RES.ID_CANCEl)
        cancel_button.click()
        if findsomething().find_by_message(self._driver, u'提交', 2, 1):
            print u'取消功能正常,弹出框关闭'
        else:
            print u'取消功能不正常,弹出框没有关闭'

    # C-19: 批改作业
    def test_19_DrawWork(self):
        RES.draw_work()
コード例 #12
0
    def draw_work(self):
        '''
        画几笔,用用橡皮擦
        录音,播放播音
        选择对错
        提交
        :return:
        '''
        # 定义driver
        res_driver = Driver().get_driver()
        # 定义对号
        right_button = res_driver.find_element_by_id(RES.ID_RIGHT)
        # 定义错号
        wrong_button = res_driver.find_element_by_id(RES.ID_WRONG)
        # 定义半对
        right_wrong_button = res_driver.find_element_by_id(RES.ID_RIGHT_WRONG)
        # 结果列表
        result = [right_button, wrong_button, right_wrong_button]

        # 定义提交按钮并点击
        submit_button = res_driver.find_element_by_id(RES.ID_SUBMIT)
        # 定义铅笔/橡皮按钮
        pen_erase_button = res_driver.find_element_by_id(RES.ID_PEN)
        # 定义录音/停止按钮
        record_button = res_driver.find_element_by_id(RES.ID_RECORD)
        # 定义播放按钮
        record_play_button = res_driver.find_element_by_id(RES.ID_RECORD_PLAY)
        # 定义查看题目按钮
        question_see_button = res_driver.find_element_by_id(RES.ID_QUESTION_SEE)

        # 定义标记按钮
        feedback_button = res_driver.find_element_by_id(RES.ID_IS_FEEDBACK)



        # 用笔画3笔
        res_driver.swipe(661, 473, 1821, 473)
        res_driver.swipe(661, 1358, 1821, 1358)
        res_driver.swipe(996, 318, 996, 1323)
        res_driver.swipe(1530, 318, 1530, 1323)
        # 点击铅笔按钮变为橡皮擦
        pen_erase_button.click()
        # 擦除一条线
        res_driver.swipe(1530, 318, 1530, 1323)
        # 录音按钮
        record_button.click()
        # 设置录音时间5s
        res_driver.implicitly_wait(5)
        # 再次点击停止录音
        record_button.click()
        # 点击录音播放按钮
        record_play_button.click()
        # 设置播放录音时间5s
        res_driver.implicitly_wait(5)
        # 点击查看题目
        question_see_button.click()
        if findsomething().find_by_message(res_driver, u'原题', 2, 1):
            print u'查看题目功能正常'
        else:
            print u'查看题目功能不正常'
        # 定义关闭查看题目按钮
        question_close_button = res_driver.find_element_by_id('com.xes.drawpanel:id/diss_window')
        # 关闭查看题目
        question_close_button.click()
        # 随机选择一个答题结果
        result[random.randint(0, 2)].click()
        # 点击标记按钮
        feedback_button.click()
        # 点击提交按钮
        submit_button.click()
                # 知识点出错
        show_submit1 = res_driver.find_element_by_id(RES.ID_SHOW_SUBMIT1)
        # 分析能力弱
        show_submit2 = res_driver.find_element_by_id(RES.ID_SHOW_SUBMIT2)
        # 基础概念模糊
        show_submit3 = res_driver.find_element_by_id(RES.ID_SHOW_SUBMIT3)
        # 计算失误
        show_submit4 = res_driver.find_element_by_id(RES.ID_SHOW_SUBMIT4)
        # 学习习惯较差
        show_submit5 = res_driver.find_element_by_id(RES.ID_SHOW_SUBMIT5)
        # 马虎粗心
        show_submit6 = res_driver.find_element_by_id(RES.ID_SHOW_SUBMIT6)
        # 态度不端正
        show_submit7 = res_driver.find_element_by_id(RES.ID_SHOW_SUBMIT7)
        # 其它
        show_submit8 = res_driver.find_element_by_id(RES.ID_SHOW_SUBMIT8)
        # 1分
        show_score1 = res_driver.find_element_by_id(RES.ID_SHOW_SCORE1)
        # 2分
        show_score2 = res_driver.find_element_by_id(RES.ID_SHOW_SCORE2)
        # 3分
        show_score3 = res_driver.find_element_by_id(RES.ID_SHOW_SCORE3)
        # 4分
        show_score4 = res_driver.find_element_by_id(RES.ID_SHOW_SCORE4)
        # 5分
        show_score5 = res_driver.find_element_by_id(RES.ID_SHOW_SCORE5)
        # 6分
        show_score6 = res_driver.find_element_by_id(RES.ID_SHOW_SCORE6)
        # 7分
        show_score7 = res_driver.find_element_by_id(RES.ID_SHOW_SCORE7)
        # 8分
        show_score8 = res_driver.find_element_by_id(RES.ID_SHOW_SCORE8)
        # 9分
        show_score9 = res_driver.find_element_by_id(RES.ID_SHOW_SCORE9)
        # 10分
        show_score10 = res_driver.find_element_by_id(RES.ID_SHOW_SCORE10)
        # 取消
        cancel_button = res_driver.find_element_by_id(RES.ID_CANCEl)
        # 确认
        yes_button = res_driver.find_element_by_id(RES.ID_YES)

        # 定义出错原因list
        wrong_button_list = [show_submit1, show_submit2, show_submit3, show_submit4, \
                             show_submit5, show_submit6, show_submit7, show_submit8]

        # 定义分数列表
        score_button_list = [show_score1, show_score2, show_score3, show_score4, show_score5, \
                             show_score6, show_score7, show_score8, show_score9, show_score10]
        # 随机选择一个错题原因
        wrong_button_list[random.randint(0, 7)].click()
        # 随机选择一个分数
        score_button_list[random.randint(0, 9)].click()
        # 取消关闭对话框
        cancel_button.click()
        # 再次点击提交按钮
        submit_button.click()
        # 随机选择一个错题原因
        wrong_button_list[random.randint(0, 7)].click()
        # 随机选择一个分数
        score_button_list[random.randint(0, 9)].click()
        # 点击确认提交作业
        yes_button.click()
コード例 #13
0
class TestSearch(unittest.TestCase):

    #SetUp测试环境
    def setUp(self):
        '''获取driver对象,进入被测页面'''
        self._driver = Driver().get_driver()
        self.__init_serch_activity()

    #TearDown测试环境
    def tearDown(self):
        '''重置driver'''
        Driver().reset_driver()

    #初始化方法,启动搜索页面
    def __init_serch_activity(self):
        '''获取并点击位于首页的搜索入口图标'''
        _ele_search_img = self._driver.find_element_by_id(RES.ID_SEARCH_ENTRY_IMG)
        _ele_search_img.click()
        #页面常用组建
        self._ele_search_input = self._driver.find_element_by_id(RES.ID_SEARCH_INPUT)

    #C-11: 验证搜索输入框中的文字
    def test_11_defaultTextOfSearchInput(self):
        _exp_text = '搜索书名或作者'
        _act_text = self._ele_search_input.text.encode('utf8')
        assert _exp_text == _act_text, \
            '搜索输入框中的文字与设计不符,exp=%s, act=%s' %(_exp_text, _act_text)

    #C-12: 验证搜索,搜索:烦人修仙传
    def test_12_searchTargetBook(self):
        _exp_bookName = u'凡人修仙传'
        self._ele_search_input.send_keys(_exp_bookName)
        self._driver.find_element_by_id(RES.ID_SEARCH_SUBMIT).click()
        _act_rstText = self._driver.find_element_by_id(RES.ID_SEARCH_RST_TEXT).text
        assert _act_rstText == _exp_bookName, \
            '搜索跳转后的输入框文字与所输入的书名不一致, exp=%s, axt=%s' % (_exp_bookName, _act_rstText)

        _act_rstCount = self._driver.find_element_by_id(RES.ID_SEARCH_RST_COUNT).text
        assert _act_rstCount != u'0本', \
             '搜索跳转后的输入框数量显示小于1'

    #C-13: 验证搜索历史,前置case:C-12
    def test_13_searchHistoryTitle(self):
        try:
            _ele_searchHistory = self._driver.find_element_by_id(RES.ID_SEARCH_HISTORY)
            print _ele_searchHistory.text
        except:
            assert False, \
                '未发现搜索历史栏目'

    #C-14: 清空搜索记录, 前置case:C-12
    def test_13_cleanHistoryList(self):
        _ele_cleanHistory = self._driver.find_element_by_id(RES.ID_CLEAN_HISTORY)
        _ele_cleanHistory.click()
        self._driver.find_element_by_id(RES.ID_CLEAN_CONFIRM).click()

        try:
            _ele_cleanHistory = self._driver.find_element_by_id(RES.ID_SEARCH_HISTORY)
            print _ele_cleanHistory.text
        except:
            return

        assert True, \
                '发现清空搜索记录按钮'

    #C-13: 验证每次进入获取的热搜词贴都是随机不同的
    def test_21_hotWordsTag(self):
        _hot_words_id = 'com.esbook.reader:id/tv_hot_word_search_item'
        _hot_words_tags = self._driver.find_elements_by_id(_hot_words_id)
        for _hot_wods in _hot_words_tags:
            print _hot_wods.text

        self._driver.back()
        self._driver.back()
        _ele_search_img = self._driver.find_element_by_id(RES.ID_SEARCH_IMG_MAIN)
        _ele_search_img.click()

        _hot_words_tags = self._driver.find_elements_by_id(_hot_words_id)
        for _hot_wods in _hot_words_tags:
            print _hot_wods.text
コード例 #14
0
class TestMyWork(unittest.TestCase):
    # SetUp测试环境
    def setUp(self):
        '''获取driver对象,进入被测页面'''
        self._driver = Driver().get_driver()
        self.__init_Login_activity()

    # TearDown测试环境
    def tearDown(self):
        # 重置driver,清空driver累积状态,供同时运行多条case使用
        # Driver().reset_driver()
        # 关闭当前session,仅供单条case测试使用,多条的时候注释掉此行
        Driver().close_driver()

    # 初始化方法,登录账户
    def __init_Login_activity(self):
        _driver = LRES.login_account()

    # C-11: 验证试卷名字
    def test_11_PaperName(self):
        _exp_paper_name = RES.paper_name
        _act_paper_name = RES.find_all_work().find_element_by_id(RES.ID_PAPER_TITLE).text.encode('utf8')
        print _act_paper_name
        assert _exp_paper_name == _act_paper_name, \
            '试卷名字与期望不符,exp=%s, act=%s' % (_exp_paper_name, _act_paper_name)

    # C-12: 验证老师名字
    def test_12_TeacherName(self):
        _exp_teacher_name = RES.teacher_name
        _act_teacher_name = RES.find_all_work().find_element_by_id(RES.ID_TEACHER_NAME).text.encode('utf8')
        print _act_teacher_name
        assert _exp_teacher_name == _act_teacher_name, \
            '主讲老师名字与期望不符,exp=%s, act=%s' % (_exp_teacher_name, _act_teacher_name)

    # C-13: 验证班级名字
    def test_13_ClassName(self):
        _exp_class_name = RES.class_name
        # _act_class_name = self.__find_All_Work().find_element_by_
        _act_class_name = RES.find_all_work().find_element_by_id(RES.ID_CLASS).text.encode('utf8')
        print _act_class_name
        assert _exp_class_name == _act_class_name, \
            '班级名字与期望不符,exp=%s, act=%s' % (_exp_class_name, _act_class_name)

    # C-14: 验证发布时间
    def test_14_PubTime(self):
        _exp_pub_time = RES.pub_time
        _act_pub_time = RES.find_all_work().find_element_by_id(RES.ID_PUB_TIME).text.encode('utf8')
        print _act_pub_time
        assert _exp_pub_time == _act_pub_time, \
            '发布时间与期望不符,exp=%s, act=%s' % (_exp_pub_time, _act_pub_time)

    # C-15: 验证班级人数
    def test_15_Class_No(self):
        _exp_class_no = RES.class_no
        _act_class_no = RES.find_all_work().find_element_by_id(RES.ID_CLASS_NUM).text.encode('utf8')
        print _act_class_no
        assert _exp_class_no == _act_class_no[-1], \
            '班级人数与期望不符,exp=%s, act=%s' % (_exp_class_no, _act_class_no[-1])

    # C-16: 验证提交人数和未提交人数之和是否为班级总人数
    def test_16_Class_No(self):
        _submit_no = RES.find_all_work().find_element_by_id(RES.ID_SUBMIT_NUM).text.encode('utf8')
        # _submit_no.subString(-1)
        _not_submit_no = RES.find_all_work().find_element_by_id(RES.ID_NO_SUBMIT).text.encode('utf8')
        # 分别截取最后一个字符
        assert string.atoi(_submit_no[-1]) + string.atoi(_not_submit_no[-1]) == string.atoi(RES.class_no), \
            '提交人数与未提交人数之和和班级总人数不符,exp=%d, act=%d' % (
                string.atoi(_submit_no[-1]) + string.atoi(_not_submit_no[-1]), RES.class_no)

    #C-17: 验证批改按钮为批改(1)的时候试卷状态应该为待批改,批改(0)的时候试卷状态应该为已完成
    def test_17_Paper_Status_Pigai(self):
        RES.get_paper_status()

    # C-18: 验证待批作业数目
    def test_18_Ready_To_Pigai(self):
        _exp_ready_pigai = '0'
        _act_ready_pigai = self._driver.find_element_by_id(RES.ID_READY_TO_PIGAI).text.encode('utf-8')
        print '待批数量:' + _act_ready_pigai
        assert _exp_ready_pigai == _act_ready_pigai, \
            '待批数目与期望不符,exp=%s, act=%s' % (_exp_ready_pigai, _act_ready_pigai)

    #C-19: 点击作业原题与答案按钮
    def test_19_Question_Check(self):
        question = RES.find_all_work().find_element_by_id(RES.ID_QUESTION)
        question.click()
        play_button = self._driver.find_element_by_id(RES.ID_PLAY)
        play_button.click()
        # message = '无语音解析'.encode('utf-8')
        __driver = self._driver
        # RES.find_toast(u"无语音解析",5, 1, self._driver)
        print RES.wait_toast_by_message(self._driver, "无语音解析", 5, 0.00001)
        # RES().wait_activity(u"无语音解析",5, 1)
        # Find_Toast.wait_toast_by_message(u"无语音解析",5, 1)
        # Find_Toast.find_toast(u"无语音解析",5, 0.5, self._driver)
        # WebDriverWait(driver, 5, 0.5).until(expected_conditions.presence_of_element_located((By.PARTIAL_LINK_TEXT, message)))
        self._driver.swipe(2106, 1209, 240, 1209)
        play_button.click()

    #C-20: 找到发布按钮并发布作业
    def test_20_Publish_Work(self):
        RES.find_and_click_pub_button()

    #C-21: 找到批改按钮并批改作业
    def test_21_Draw_Work(self):
        '''
        没作业的时候打印没有待批改作业
        有作业的时候开始批改作业
        :return:
        '''
        RES.find_and_click_draw_button()
        student_name = self._driver.find_element_by_id(RES.ID_STUDENT_NAME).text.encode('utf-8')
        if student_name == u'无学生':
            print '现在没有待批改作业'
        else:
            #批改作业在testmywork中
            pass
            # RES_DrawPanel.draw_work()

    #C-22: 获取作业列表数目
    def test_22_Get_Work_No(self):
        list_panel_id = 'com.xes.drawpanel:id/live_ListView'
        # item_className = 'android.widget.LinearLayout'
        item_className = 'com.xes.drawpanel:id/rll'
        # a = Driver().get_driver().find_element_by_id(list_panel_id).find_elements_by_class_name(item_className)
        # print len(a)
        # b = a[0].find_elements_by_class_name('android.widget.TextView')
        # for tst in b:
        #     print tst.text.encode('utf-8')
        # stu_info = E.element_scroll(Driver().get_driver(), list_panel_id, item_className)
        stu_info = E.element_scroll_to_find_button(Driver().get_driver(), list_panel_id, item_className)
        stu_no = len(stu_info)
        # stu_no = len(E.element_scroll(Driver().get_driver(), list_panel_id, item_className))
        print '作业列表数量:' + str(stu_no)

    #C-23: 获取作业列表数目
    def test_23_Get_Work_No(self):
        list_panel_id = 'com.xes.drawpanel:id/live_ListView'
        item_className = 'com.xes.drawpanel:id/rll'
        a = Driver().get_driver().find_element_by_id(list_panel_id).find_elements_by_id(item_className)
        print FRES.find_all_button(a[0])