class QCFillAnswerPage1(AllBasePage): appPackage = get_appPackage() ''' 遣词造句题目作答页 ''' qc_curr_sen_id = (By.ID, "{}:id/construction_quest_tip".format(appPackage)) qc_CN_text_id = (By.ID, "{}:id/construction_quest_text".format(appPackage)) qc_curr_ques_id = (By.ID, "{}:id/construction_subquest_tip".format(appPackage)) qc_answer_edit_id = (By.ID, "{}:id/construction_subquest_edit".format(appPackage)) qc_submit_id = (By.ID, "{}:id/construction_quest_submit".format(appPackage)) qc_next_ques_btn_id = (By.ID, "{}:id/construction_quest_next".format(appPackage)) qc_finish_btn_id = (By.ID, "{}:id/construction_quest_sure".format(appPackage)) def get_qc_senNum_text(self): return self.getText(self.find_element(*self.qc_curr_sen_id)) def get_qc_curr_sen_nums(self): text = self.getText(self.find_element(*self.qc_curr_sen_id)) text_regx = re.compile(r'.*\((\d+)\/(\d+)') result = text_regx.search(text).groups() current_num = int(result[0]) total_num = int(result[1]) return current_num, total_num def get_qc_step_text(self): return self.getText(self.find_element(*self.qc_curr_ques_id)) def get_qc_current_ques_step_nums(self): try: text = self.getText(self.find_element(*self.qc_curr_ques_id)) print("text", text) text_regx = re.compile(r'\((\d+)\/(\d+)\)') result = text_regx.search(text).groups() current_step = int(result[0]) total_step = int(result[1]) return current_step, total_step except: print("Get steps num failed") return None, None def qc_fill_answer(self, answer=None): qc_edit_ele = self.find_element(*self.qc_answer_edit_id) # qc_edit_ele.click() qc_edit_ele.send_keys(answer) def click_qc_submit_btn(self): self.find_element(*self.qc_submit_id).click() def click_qc_next_ques_btn(self): self.find_element(*self.qc_next_ques_btn_id).click() def click_qc_finish_btn(self): self.find_element(*self.qc_finish_btn_id).click()
class WSSingleResultPage2(WSFillAnswerPage1): appPackage = get_appPackage() ''' 单词拼写题目判定页 ''' EN_answer_id = (By.ID, "{}:id/fragment_word_spell_word".format(appPackage)) audio_icon_id = (By.ID, "{}:id/fragment_word_spell_word_phsymbol".format(appPackage)) word_CN_id = (By.ID, "{}:id/fragment_word_spell_word_translate".format(appPackage)) ws_next_button_id = (By.ID, "{}:id/fragment_word_spell_next_tv".format(appPackage)) test = 'com.langlib.ncee:id/fragment_word_spell_next_tv' ws_finish_button_id = (By.ID, "{}:id/fragment_word_spell_done_tv".format(appPackage)) def get_ws_single_result_EN(self): return self.getText(self.find_element(*self.EN_answer_id)) def get_ws_single_result_CN(self): return self.getText(self.find_element(*self.word_CN_id)) def click_word_spell_single_result_audio(self): self.find_element(*self.audio_icon_id).click() def click_word_spell_next_button(self): # print("hhhhhhhhhhhhhh",self.test in self.page_source()) self.find_element(*self.ws_next_button_id).click() def click_word_spell_finish_button(self): self.find_element(*self.ws_finish_button_id).click()
class GFAnswerResultPage2(GFWordsListPage1): appPackage = get_appPackage() ''' 语法填空题目作答页 ''' answer_fill_ele_class = "android.widget.EditText" answer_fill_classes = (By.CLASS_NAME, "android.widget.EditText") to_check_answer = (By.ID, "".format(appPackage)) submit_id = (By.ID, "{}:id/fragment_gra_fill_canto_commit_tv".format(appPackage)) done_id = (By.ID, "{}:id/fragment_gra_fill_canto_done_tv".format(appPackage)) ''' 语法填空答案解析页 ''' item_text_class = (By.CLASS_NAME, "android.widget.TextView") done_all_id = (By.ID, "{}:id/fragment_gra_fill_canto_done_all_tv".format(appPackage)) def gra_fill_fill_answer(self, driver, answers, nums=10): fill_eles1 = self.find_elements(*self.answer_fill_classes) if nums <= len(fill_eles1): for fill, answer in zip(fill_eles1[:int(nums)], answers[:(int(nums))]): self.hideKeyboard() fill.send_keys(answer) self.hideKeyboard() if nums > len(fill_eles1): for fill1, answer1 in zip(fill_eles1[:(len(fill_eles1))], answers[:(len(fill_eles1))]): self.hideKeyboard() fill1.send_keys(answer1) self.hideKeyboard() x, y = driver.getSize() driver.swipeUp(x * 0.5, y * 0.8, 0, 200) fill_eles2 = self.find_elements(*self.answer_fill_classes) for fill2, answer2 in zip(fill_eles2[(len(fill_eles1)-10):], answers[(len(fill_eles1)-10):]): self.hideKeyboard() fill2.send_keys(answer2) self.hideKeyboard() def click_gra_fill_submit(self): self.find_element(*self.submit_id).click() def click_to_check_answer(self): self.find_element(*self.to_check_answer).click() def click_gra_fill_finish_button(self): self.find_element(*self.done_id).click() ''' 答案解析页 ''' def click_gra_fill_play(self): self.find_elements(*self.item_text_class)[0].click() def click_gra_fill_conv_text(self): self.find_elements(*self.item_text_class)[1].click() def click_gra_fill_conv_answer(self): self.find_elements(*self.item_text_class)[2].click() def click_gra_fill_finish_all(self): self.find_element(*self.done_all_id).click()
class GFWordsListPage1(AllBasePage): appPackage = get_appPackage() ''' 语法填空生词表页 ''' gra_page_title_id = (By.ID, "{}:id/title_iframe_title_tv".format(appPackage)) # gra_list_num_id = (By.ID, "com.langlib.cee:id/fragment_gra_fill_detail_index_tv") gra_list_num_id = ( By.ID, "{}:id/fragment_gra_fill_word_profi_index_tv".format(appPackage)) gra_fill_next_step_id = ( By.ID, "{}:id/fragment_gra_fill_canto_next_step_tv".format(appPackage)) def get_gra_list_text(self): return self.getText(self.find_element(*self.gra_list_num_id)) def get_gra_lists_nums(self): text = self.getText(self.find_element(*self.gra_list_num_id)) text_regx = re.compile(r'.*\((\d+)\/(\d+)') result = text_regx.search(text).groups() current_num = result[0] total_num = result[1] return current_num, total_num def click_gra_fill_next_step(self): self.find_element(*self.gra_fill_next_step_id).click()
class FangxieZaojuFillAnswerPage1(AllBasePage): appPackage = get_appPackage() ''' 仿写造句题目作答页 ''' page_title_id = (By.ID, "{}:id/title_iframe_title_tv".format(appPackage)) total_groups_num_id = (By.ID, "{}:id/senimitation_currqinx".format(appPackage)) fangxie_zaoju_fill_answer_id = ( By.ID, "{}:id/senimitation_write_edit".format(appPackage)) fangxie_zaoju_ques_id = ( By.ID, "{}:id/senimitation_guide_questtext".format(appPackage)) fangxie_zaoju_submit_id = (By.ID, "{}:id/senimitation_submit".format(appPackage)) fangxie_zaoju_next_step_id = (By.ID, "{}:id/senimitation_next".format(appPackage)) fangxie_zaoju_finish_btn_id = ( By.ID, "{}:id/senimitation_sure".format(appPackage)) def get_fangxie_zaoju_groups_nums(self): text = self.getText(self.find_element(*self.total_groups_num_id)) text_regx = re.compile(r'.*\((\d+)\/(\d+)') result = text_regx.search(text).groups() current_group = int(result[0]) total_group = int(result[1]) return current_group, total_group def get_fangxie_zaoju_step_text(self): return self.getText(self.find_element(*self.fangxie_zaoju_ques_id)) def get_fangxie_zaoju_step_nums(self): try: text = self.getText(self.find_element(*self.fangxie_zaoju_ques_id)) text_regx = re.compile(r'\((\d+)\/(\d+)\)') result = text_regx.search(text).groups() current_step = int(result[0]) total_step = int(result[1]) return current_step, total_step except: print("Get steps num failed") return None, None def fangxie_zaoju_fill_CN_answer(self, answer): ele = self.find_element(*self.fangxie_zaoju_fill_answer_id) ele.click() ele.send_keys(answer) self.hideKeyboard() def click_fangxie_zaoju_submit_btn(self): self.find_element(*self.fangxie_zaoju_submit_id).click() def click_fangxie_zaoju_next_step_btn(self): self.find_element(*self.fangxie_zaoju_next_step_id).click() def click_fangxie_zaoju_finish_btn(self): self.find_element(*self.fangxie_zaoju_finish_btn_id).click()
class GCChooseAnswerPage1(AllBasePage): appPackage = get_appPackage() ''' 语法单选题目作答页 ''' gra_page_title_id = (By.ID, "{}:id/title_iframe_title_tv".format(appPackage)) gra_choice_list_num_id = ( By.ID, "{}:id/fragment_gra_choice_questinx".format(appPackage)) # com.langlib.ncee:id/fragment_gra_choice_questinx gra_text_id = (By.ID, "{}:id/text_view".format(appPackage)) gra_choice_answer_a_id = ( By.ID, "{}:id/gra_choice_drag_answer_a".format(appPackage)) gra_choice_answer_b_id = ( By.ID, "{}:id/gra_choice_drag_answer_b".format(appPackage)) gra_choice_answer_c_id = ( By.ID, "{}:id/gra_choice_drag_answer_c".format(appPackage)) gra_choice_answer_d_id = ( By.ID, "{}:id/gra_choice_drag_answer_d".format(appPackage)) gra_choice_i_dont_know_id = ( By.ID, "{}:id/gra_choice_drag_answer_e".format(appPackage)) gra_choose_sure_id = ( By.ID, "{}:id/fragment_gra_choice_sure_tv".format(appPackage)) def get_gra_choice_list_text(self): return self.getText(self.find_element(*self.gra_choice_list_num_id)) def get_gra_choice_lists_nums(self): text = self.getText(self.find_element(*self.gra_choice_list_num_id)) text_regx = re.compile(r'.*\((\d+)\/(\d+)') result = text_regx.search(text).groups() current_num = result[0] total_num = result[1] return current_num, total_num def gra_choice_choose_answer(self, answers): print("Answer.lower", answers.lower()) try: if answers.lower() == 'a': self.find_element(*self.gra_choice_answer_a_id).click() if answers.lower() == 'b': self.find_element(*self.gra_choice_answer_b_id).click() if answers.lower() == 'c': self.find_element(*self.gra_choice_answer_c_id).click() if answers.lower() == 'd': self.find_element(*self.gra_choice_answer_d_id).click() except: self.find_element(*self.gra_choice_i_dont_know_id).click() def click_gra_choice_choose_sure(self): self.find_element(*self.gra_choose_sure_id).click()
class WSFillAnswerPage1(AllBasePage): appPackage = get_appPackage() ''' 单词拼写题目作答页 ''' page_title_id = (By.ID, "{}:id/title_iframe_title_tv".format(appPackage)) ws_list_num_id = (By.ID, "{}:id/fragment_word_spell_index_tv".format(appPackage)) word_spell_CN = (By.ID, "{}:id/fragment_word_spell_detail_cn".format(appPackage)) input_btn_class = (By.CLASS_NAME, "android.widget.EditText") def get_word_spell_list_text(self): return self.getText(self.find_element(*self.ws_list_num_id)) def get_word_spell_list_num(self): text = self.getText(self.find_element(*self.ws_list_num_id)) text_regx = re.compile(r'.*\((\d+)\/(\d+)') result = text_regx.search(text).groups() current_num = result[0] total_num = result[1] return current_num, total_num def get_word_spell_CN(self): return self.getText(self.find_element(*self.word_spell_CN)) def fill_word_spell_answer(self, answers=None): try: try: self.hideKeyboard() except: pass self.find_element(*self.input_btn_class).send_keys(answers) fill_answer = [] for ele in self.find_elements(*self.input_btn_class): fill_answer.append(self.getText(ele)) print("Fill Answer:", str("".join(fill_answer).strip())) while str("".join(fill_answer).strip()) != str(answers): fill_answer1 = [] if str("".join(fill_answer1).strip()) != str(answers): for ele in self.find_elements(*self.input_btn_class): ele.clear() self.find_elements(*self.input_btn_class)[0].click() self.find_element(*self.input_btn_class).send_keys(answers) fill_answer1.clear() for ele in self.find_elements(*self.input_btn_class): fill_answer1.append(self.getText(ele)) if str("".join(fill_answer1).strip()) == str(answers): break except: self.find_element(*self.input_btn_class).send_keys(answers) self.pressKeyCode("66")
class SC75Step1Page1(AllBasePage): appPackage = get_appPackage() ''' 七选五训练Step1 ''' page_title_id = (By.ID, "{}:id/title_iframe_title_tv".format(appPackage)) step1_word_list_id = ( By.ID, "{}:id/fragment_word_profi_list_head_item_tv1".format(appPackage)) next_step_btn_id = (By.ID, "{}:id/sen_cloze_next_step_tv".format(appPackage)) def get_sc_75_words_list_text(self): return self.getText(self.find_element(*self.step1_word_list_id)) def click_sc_75_next_btn(self): self.find_element(*self.next_step_btn_id).click()
class ZXFillAnswerPage1(AllBasePage): appPackage = get_appPackage() ''' 真题写作作答页 ''' start_to_answer_btn_id = ( By.ID, "{}:id/fragment_error_find_question_start_tv".format(appPackage)) # com.langlib.ncee: id / fragment_error_find_question_start_tv zhenti_xiezuo_time_id = ( By.ID, "{}:id/fragment_writing_detail_time".format(appPackage)) zhenti_xiezuo_words_count_id = ( By.ID, "{}:id/fragment_writing_detail_count".format(appPackage)) zhenti_xiezuo_edit_id = ( By.ID, "{}:id/fragment_writing_detail_edittext".format(appPackage)) zhenti_xiezuo_zancun_id = ( By.ID, "{}:id/frame_writing_bottom_btn_cache_tv".format(appPackage)) zhenti_xiezuo_submit_id = ( By.ID, "{}:id/frame_writing_bottom_btn_handin_tv".format(appPackage)) def click_zhenti_xiezuo_start_to_answer_btn(self): self.find_element(*self.start_to_answer_btn_id).click() def get_zhenti_xiezuo_time(self): return self.getText(self.find_element(*self.zhenti_xiezuo_time_id)) def get_zhenti_xiezuo_words_count(self): return self.getText( self.find_element(*self.zhenti_xiezuo_words_count_id)) def fill_zhenti_xiezuo_answer(self, answer): ele = self.find_element(*self.zhenti_xiezuo_edit_id) ele.send_keys(str(answer)) self.hideKeyboard() def click_zhenti_xiezuo_zancun_btn(self): self.find_element(*self.zhenti_xiezuo_zancun_id).click() def click_zhenti_xiezuo_submit_id(self): self.find_element(*self.zhenti_xiezuo_submit_id).click()
class GCAnswerResultPage2(GCChooseAnswerPage1): appPackage = get_appPackage() ''' 语法单选题目判定页 ''' answer_type_ele_id = "{}:id/gra_choice_drag_answer_type".format(appPackage) answer_type_id = (By.ID, "{}:id/gra_choice_drag_answer_type".format(appPackage)) gra_choice_next_button_id = ( By.ID, "{}:id/fragment_gra_choice_next_tv".format(appPackage)) gra_choice_words_list_button_id = ( By.ID, "{}:id/fragment_gra_choice_word_tv".format(appPackage)) def get_answer_type(self, driver): if self.answer_type_ele_id in driver.page_source(): return self.getText(self.find_element(*self.answer_type_id)) def click_gra_choice_next_button(self): self.find_element(*self.gra_choice_next_button_id).click() def click_gra_choice_words_list_button(self): self.find_element(*self.gra_choice_words_list_button_id).click()
class GraErrorFindStep1Page1(AllBasePage): appPackage = get_appPackage() ''' 短文改错 ''' page_title_id = (By.ID, "{}:id/title_iframe_title_tv".format(appPackage)) gra_error_find_start_to_answer_id = (By.ID, "{}:id/fragment_error_find_question_start_tv".format(appPackage)) error_find_text_view = (By.ID, "{}:id/text_view".format(appPackage)) error_find_delete_id = (By.ID, "{}:id/popwindow_delete_tv".format(appPackage)) error_find_change_id = (By.ID, "{}:id/popwindow_correction_tv".format(appPackage)) error_find_add_id = (By.ID, "{}:id/popwindow_insert_tv".format(appPackage)) error_find_submit_id = (By.ID, "{}:id/fragment_error_find_canto_commit_tv".format(appPackage)) error_find_finish_id = (By.ID, "{}:id/fragment_error_find_canto_done_tv".format(appPackage)) def click_gra_error_find_start_to_answer(self): self.find_element(*self.gra_error_find_start_to_answer_id).click() def get_error_find_x_y(self): ele = self.find_element(*self.error_find_text_view) print("Size", self.getEleSize(ele)) width = self.getEleSize(ele).get('width') height = self.getEleSize(ele).get('height') print("Location", self.getEleLocation(ele)) x = self.getEleLocation(ele).get('x') y = self.getEleLocation(ele).get('y') return int(width), int(y), int(height) def click_error_find_delete_btn(self): self.find_element(*self.error_find_delete_id).click() def click_error_find_submit_btn(self): self.find_element(*self.error_find_submit_id).click() def click_error_find_finish_btn(self): self.find_element(*self.error_find_finish_id).click()
class WordsListsPage1(AllBasePage): appPackage = get_appPackage() ''' 词汇 ''' page_title_id = (By.ID, "{}:id/title_iframe_title_tv".format(appPackage)) wl_start_ele_id = (By.ID, "{}:id/frame_word_profi_iv".format(appPackage)) wl_star_1 = (By.ID, "{}:id/popwindow_word_profi_star1".format(appPackage)) wl_star_2 = (By.ID, "{}:id/popwindow_word_profi_star2".format(appPackage)) wl_star_3 = (By.ID, "{}:id/popwindow_word_profi_star3".format(appPackage)) def get_wl_all_star_eles(self): eles = self.find_elements(*self.wl_start_ele_id) return eles def click_wl_start1_btn(self): self.find_element(*self.wl_star_1).click() def click_wl_start2_btn(self): self.find_element(*self.wl_star_2).click() def click_wl_start3_btn(self): self.find_element(*self.wl_star_3).click()
class SAAnswerResultPage2(STFillAnswer1): appPackage = get_appPackage() ''' 段落训练第三步:句子分析 ''' sect_train_step3_lists_nums_id = ( By.ID, "{}:id/quest_analysis_step".format(appPackage)) answer_radio_button_classes = (By.CLASS_NAME, "android.widget.RadioButton") sect_train_step3_sure_btn_id = ( By.ID, "{}:id/fragment_section_train_sure".format(appPackage)) sect_train_next_question_id = ( By.ID, '{}:id/fragment_section_train_nextquest'.format(appPackage)) sect_train_step3_mask_answer_id = ( By.ID, "{}:id/sen_analysis_mask_answer".format(appPackage)) fill_CN_answer_classes = (By.CLASS_NAME, 'android.widget.EditText') sect_train_finish_button_id = ( By.ID, "{}:id/fragment_section_train_done".format(appPackage)) #临时 check_result_id = ( By.ID, "{}:id/fragment_section_train_result".format(appPackage)) def return_sect_train_step3_ques_ele(self): return self.find_element(*self.sect_train_step3_lists_nums_id) def get_sect_train_step3_lists_nums(self): text = self.getText( self.find_element(*self.sect_train_step3_lists_nums_id)) text_regx = re.compile(r'.*\((\d+)\/(\d+)') result = text_regx.search(text).groups() current_num = int(result[0]) total_num = int(result[1]) return current_num, total_num def sect_train_step3_choose_answer(self, answer=None, right=True): x, y = self.getSize() self.swipeUp(x * 0.5, y * 0.8, 0, 200) sleep(5) answers_ele = self.find_elements(*self.answer_radio_button_classes) all_answer_CN = [] for a in answers_ele: all_answer_CN.append(self.getText(a)) if right: if self.getText(a) == answer: a.click() else: if self.getText(a) != answer: a.click() print("All_answer_CN", all_answer_CN) if answer not in all_answer_CN: print("正确答案不存在") self.save_screen_shot("正确答案不存在", file_name="句子分析不存在正确答案") sleep(180) for a in answers_ele: if self.getText(a) != answer: a.click() def click_sect_train_step3_sure_btn(self): self.find_element(*self.sect_train_step3_sure_btn_id).click() def click_sect_train_step3_next_ques_btn(self): self.find_element(*self.sect_train_next_question_id).click() def click_sect_train_mask_CN(self): self.find_element(*self.sect_train_step3_mask_answer_id).click() def sect_train_step3_fill_CN_answer(self, answer): print("Answer", answer, str(answer)) ele = self.find_element(*self.fill_CN_answer_classes) ele.click() ele.send_keys(str(answer)) text = self.getText(ele) print(text, text != str(answer)) while text != str(answer): ele.clear() ele.ele.send_keys(str(answer)) text = self.getText(ele) if text == str(answer): break def click_sect_train_step3_finish_button(self): self.find_element(*self.sect_train_finish_button_id).click() def click_sect_train_step3_check_result_btn(self): self.find_element(*self.check_result_id).click()
class All_ResultPage(BasePage): appPackage = get_appPackage() ''' 最后一题,底部按钮为生词表 ''' word_list_button_id = ( By.ID, "{}:id/fragment_short_conv_answer_word_tv".format(appPackage)) ''' 生词表页,底部按钮为完成 ''' word_profi_done_id = ( By.ID, "{}:id/fragment_word_profi_done_tv".format(appPackage)) """ 结果展示页 """ time_id = (By.ID, "{}:id/fragment_list_top_view_time".format(appPackage)) grade_id = (By.ID, "{}:id/fragment_list_top_view_grade".format(appPackage)) answer_lists_index_ids = ( By.ID, "{}:id/fragment_sen_fill_list_item_index".format(appPackage)) # com.langlib.cee: id / fragment_sen_fill_list_item_index words_lists_icon = ( By.ID, "{}:id/fragment_sen_fill_list_glossary_tv".format(appPackage)) learn_center_class = (By.CLASS_NAME, "android.widget.TextView") learn_card_ele_id = "{}:id/view_punch_clock_punch_btn".format(appPackage) learn_card_id = (By.ID, "{}:id/view_punch_clock_punch_btn".format(appPackage)) learn_card_close_id = (By.ID, "{}:id/view_punch_clock_close".format(appPackage)) ''' 最后一题,底部按钮为生词表 ''' def click_words_list_button(self): self.find_element(*self.word_list_button_id).click() ''' 生词表页,底部按钮为完成 ''' def click_word_finish_button(self): self.find_element(*self.word_profi_done_id).click() """ 结果展示页 """ def get_time(self): return self.getText(self.find_element(*self.time_id)) def get_grade(self): return self.getText(self.find_element(*self.grade_id)) def get_item_lists_index(self): eles = self.find_elements(*self.answer_lists_index_ids) return eles def click_result_num_index(self, ele): ele.click() def click_word_icon(self): self.find_element(*self.words_lists_icon).click() def click_learn_center(self): self.find_element(*self.learn_center_class).click() def click_learn_card_btn(self): if self.learn_card_ele_id in self.page_source(): self.find_element(*self.learn_card_id).click() else: pass def click_learn_card_close_btn(self): print('"学习打卡" in self.page_source()', "学习打卡" in self.page_source()) if "学习打卡" in self.page_source(): self.find_element(*self.learn_card_close_id).click() return 1 else: return 0 def click_learn_card_task_btn(self): from time import sleep print('"学习打卡" in self.page_source()', "学习打卡" in self.page_source()) self.find_element(*self.learn_card_id).click() sleep(2)
class LC_Step1_Page(AllBasePage): appPackage = get_appPackage() ''' 长对话第一步选择关键词 ''' page_title_id = (By.ID, "{}:id/title_iframe_title_tv".format(appPackage)) list_num_id = (By.ID, "{}:id/fragment_word_dic_index_tv".format(appPackage)) step_desc = (By.ID, "{}:id/fragment_short_conv_step_des".format(appPackage)) question_num_ids = (By.ID, "{}:id/conversation_question_no".format(appPackage)) answer_a_ids = (By.ID, "{}:id/option_a".format(appPackage)) answer_b_ids = (By.ID, "{}:id/option_b".format(appPackage)) answer_c_ids = (By.ID, "{}:id/option_c".format(appPackage)) long_conv_sure_id = (By.ID, "{}:id/fragment_short_conv_sure_tv".format(appPackage)) long_conv_next_id = (By.ID, "{}:id/fragment_short_conv_next_tv".format(appPackage)) def get_long_conv_step_desc(self): return self.getText(self.find_element(*self.step_desc)) def get_long_conv_curr_step(self): return self.getText(self.find_element(*self.step_desc)).split(":")[0] def get_long_conv_list_text(self): return self.getText(self.find_element(*self.list_num_id)) def get_long_conv_lists_nums(self): text = self.getText(self.find_element(*self.list_num_id)) text_regx = re.compile(r'.*\((\d+)\/(\d+)') result = text_regx.search(text).groups() current_num = result[0] total_num = result[1] return current_num, total_num def find_all_long_conv_mark_eles(self): words_eles = self.find_elements(*self.question_num_ids) return words_eles def long_conv_step1_mark_words(self, word_ele, num=1): num = int(num) # word_ele.click() for i in range(1, 3): self.find_elements(*self.answer_a_ids)[i - 1].click() self.find_elements(*self.answer_b_ids)[i - 1].click() self.find_elements(*self.answer_c_ids)[i - 1].click() x, y = self.getSize() self.swipeUp(x * 0.8, y * 0.8, 0, 200) if num == 4: for j in range(-2,0): self.find_elements(*self.answer_a_ids)[j].click() self.find_elements(*self.answer_b_ids)[j].click() self.find_elements(*self.answer_c_ids)[j].click() if num == 3: self.find_elements(*self.answer_a_ids)[-1].click() self.find_elements(*self.answer_b_ids)[-1].click() self.find_elements(*self.answer_c_ids)[-1].click() def click_long_conv_step1_sure(self): self.find_element(*self.long_conv_sure_id).click() def click_long_conv_step1_next(self): self.find_element(*self.long_conv_next_id).click()
class STFillAnswer1(AllBasePage): appPackage = get_appPackage() ''' 段落训练第一步 ''' sect_train_page_title_id = (By.ID, "{}:id/title_iframe_title_tv".format(appPackage)) sect_train_total_list_num_id = (By.ID, "{}:id/fragment_section_train_child_tip".format(appPackage)) sect_train_text_id = (By.ID, '{}:id/fragment_section_train_word_child_questtext'.format(appPackage)) sect_train_step2_sure_btn_id = (By.ID, "{}:id/fragment_section_train_sure".format(appPackage)) sect_train_next_button_id = (By.ID, "{}:id/fragment_section_train_nexttv".format(appPackage)) ''' 段落训练第二步:段落主旨句 ''' ques_desc_id = (By.ID, '{}:id/quest_section_part_tip'.format(appPackage)) answer_edit_text_id = (By.ID, "{}:id/quest_section_part_ed".format(appPackage)) sect_train_sure_button_id = (By.ID, "{}:id/fragment_section_train_sure".format(appPackage)) sect_train_step2_next_btn_id = (By.ID, "{}:id/fragment_section_train_nexttv".format(appPackage)) ''' 第一步元素操作步骤 ''' def get_sect_train_list_text(self): return self.getText(self.find_element(*self.sect_train_total_list_num_id)) def get_sect_train_text_text(self): return self.getText(self.find_element(*self.sect_train_text_id)) def get_sect_train_edit_text(self): return self.getText(self.find_element(*self.answer_edit_text_id)) def click_sect_train_step1_next_button(self): self.find_element(*self.sect_train_next_button_id).click() # self.find_element(*self.sect_train_step2_next_btn_id).click() ''' 段落训练:第二步段落主旨句元素操作步骤 ''' def get_ques_desc_text(self): return self.getText(self.find_element(*self.ques_desc_id)).split(':')[0] def sect_train_step2_fill_answer(self, answer): ele = self.find_element(*self.answer_edit_text_id) ele.send_keys(answer) text = self.getText(ele) times = 0 while text != str(answer): ele.clear() ele.send_keys(str(answer)) text = self.getText(ele) times += 1 if text == str(answer): break if times > 3: break def click_sect_train_step2_sure_button(self): self.find_element(*self.sect_train_step2_sure_btn_id).click() def click_sect_train_step2_next_btn(self): self.find_element(*self.sect_train_step2_next_btn_id).click()
class ZXResultAnswerPage(ZXFillAnswerPage1): appPackage = get_appPackage() ''' 真题写作结果页 ''' pass
class LC_Step2_Page(LC_Step1_Page): appPackage = get_appPackage() ''' 长对话训练第二步做题步骤 ''' audio_icon_id = (By.ID, "{}:id/frame_audio_conv_imageview".format(appPackage)) current_time_id = ( By.ID, "{}:id/frame_audio_conv_current_time".format(appPackage)) total_time_id = (By.ID, "{}:id/frame_audio_conv_total_time".format(appPackage)) question_num_ids = (By.ID, "{}:id/conversation_question_no".format(appPackage)) question_items_ids = (By.ID, "{}:id/conversation_question".format(appPackage)) long_conv_answer_a_id = (By.ID, "{}:id/option_a_no".format(appPackage)) long_conv_answer_b_id = (By.ID, "{}:id/option_b_no".format(appPackage)) long_conv_answer_c_id = (By.ID, "{}:id/option_c_no".format(appPackage)) long_conv_answer_c_items = (By.ID, "{}:id/option_c_no".format(appPackage)) item_text_class = (By.CLASS_NAME, "android.widget.TextView") long_conv_done_id = ( By.ID, "{}:id/fragment_short_conv_done_tv".format(appPackage)) long_conv_answer_words_list_id = ( By.ID, "{}:id/fragment_short_conv_answer_word_tv".format(appPackage)) long_conv_words_List_finish_btn_id = ( By.ID, "{}:id/fragment_word_profi_done_tv".format(appPackage)) def click_long_conv_audio_icon(self): self.find_element(*self.audio_icon_id).click() def get_long_conv_audio_current_time(self): current_time = self.getText(self.find_element(*self.current_time_id)) print("Current_time", current_time) return current_time def get_long_conv_audio_total_time(self): total_time = self.getText(self.find_element(*self.total_time_id)) print("Total time", total_time) return total_time def check_long_conv_audio_play_result(self, curr, total): return True if curr == total else False def find_all_long_conv_c_items(self): eles = self.find_elements(*self.long_conv_answer_c_items) print("ELES", eles) return eles def find_all_long_conv_choose_question_no(self): question_ele = self.find_elements(*self.question_num_ids) print("Q ELEs", question_ele) return question_ele def get_long_conv_question_num(self, ele): question_num = str(self.getText(ele)).split('.')[0] return int(question_num) def choose_long_conv_step2_answer(self, num, answer, c=0): print("Answer", answer, "Num", num) if answer.upper() == 'A': print("Choose A", num, c) # print(self.find_elements(*self.long_conv_answer_a_id)[num - 1]) # print(self.find_elements(*self.long_conv_answer_a_id)) # self.find_elements(*self.long_conv_answer_a_id)[num - 1].click() if c: print( '"4." in self.page_source() or "3." in self.page_source()', "4." in self.page_source() or "3." in self.page_source()) if ("4." in self.page_source() or "3." in self.page_source()) and num == 0: self.find_elements(*self.long_conv_answer_b_id)[0].click() if num == 1: self.find_elements(*self.long_conv_answer_a_id)[1].click() if num == 2: try: self.find_elements( *self.long_conv_answer_b_id)[2].click() except: self.find_elements( *self.long_conv_answer_b_id)[1].click() else: if c == 4: self.find_elements(*self.long_conv_answer_a_id)[num - 2].click() else: try: self.find_elements( *self.long_conv_answer_a_id)[num - 1].click() except: self.find_elements( *self.long_conv_answer_a_id)[num - 2].click() if answer.upper() == 'B': print("Choose B", num, c) # print(self.find_elements(*self.long_conv_answer_a_id)[num - 1]) # print(self.find_elements(*self.long_conv_answer_b_id)) # self.find_elements(*self.long_conv_answer_b_id)[num - 1].click() if c: print( '"4." in self.page_source() or "3." in self.page_source()', "4." in self.page_source() or "3." in self.page_source()) if ("4." in self.page_source() or "3." in self.page_source()) and num == 0: self.find_elements(*self.long_conv_answer_b_id)[0].click() if num == 1: self.find_elements(*self.long_conv_answer_b_id)[1].click() if num == 2: try: self.find_elements( *self.long_conv_answer_b_id)[2].click() except: self.find_elements( *self.long_conv_answer_b_id)[1].click() else: if c == 4: self.find_elements(*self.long_conv_answer_b_id)[num - 2].click() else: try: self.find_elements( *self.long_conv_answer_b_id)[num - 1].click() except: try: self.find_elements( *self.long_conv_answer_b_id)[num - 2].click() except: pass if answer.upper() == 'C': print("Choose C", num, "CCCCCCCCCCCCCcc", c) print(self.find_elements(*self.long_conv_answer_b_id)) # print("len(se", len(self.find_elements(*self.long_conv_answer_c_id))) if c: if num == 1: self.find_elements(*self.long_conv_answer_c_id)[1].click() if num == 2: try: self.find_elements( *self.long_conv_answer_b_id)[2].click() except: self.find_elements( *self.long_conv_answer_b_id)[1].click() else: if c == 4: self.find_elements(*self.long_conv_answer_c_id)[num - 2].click() else: try: self.find_elements( *self.long_conv_answer_b_id)[num - 1].click() except: try: self.find_elements( *self.long_conv_answer_b_id)[num - 2].click() except: pass # except: # print("第二步第三题第四题挡住了") # x, y = self.getSize() # # self, x, y1, y2, t=500 # self.swipeUp(x * 0.8, y * 0.8, 0, 200) # if answer.upper() == 'A': # self.find_elements(*self.answer_a_id)[num - 1].click() # if answer.upper() == 'B': # self.find_elements(*self.answer_b_id)[num - 1].click() # if answer.upper() == 'C': # self.find_elements(*self.answer_c_id)[num - 1].click() def click_long_conv_step2_sure(self): self.find_element(*self.long_conv_done_id).click() ''' 第二步结果页 ''' def click_long_conv_play_text(self): self.find_elements(*self.item_text_class)[0].click() def click_long_conv_conv_text(self): self.find_elements(*self.item_text_class)[1].click() def click_long_conv_conv_answer(self): self.find_elements(*self.item_text_class)[2].click() def click_long_conv_step2_words_list(self): self.find_element(*self.long_conv_answer_words_list_id).click() def click_long_conv_words_list_finish_btn(self): self.find_element(*self.long_conv_words_List_finish_btn_id).click()
class STAllAnswerPage(SAAnswerResultPage2): appPackage = get_appPackage() sen_index_classes = (By.CLASS_NAME, '{}:id/recy_item'.format(appPackage)) def click_sen_index_num(self): self.find_element(*self.sen_index_classes).click()
class StudyCenter(ProdPage): appPackage = get_appPackage() ''' 学习中心页面元素 ''' ''' 课程名称及切换 ''' course_name_id = (By.ID, "{}:id/fragment_course_task_name".format(appPackage)) course_list_close_id = ( By.ID, "{}:id/dialog_class_view_close_btn".format(appPackage)) course_lists_ids = (By.ID, "{}:id/fragment_class_item_rl".format(appPackage)) pre_for_test_id = (By.ID, "{}:id/fragment_class_item_type_tv".format(appPackage)) ''' 备考倒计时 ''' exam_days_id = (By.ID, "{}:id/view_exam_count_down".format(appPackage)) ''' 学习报告,测评历史,打卡记录 ''' study_report_id = ( By.ID, "{}:id/view_learing_center_study_report_rl".format(appPackage)) test_history_id = ( By.ID, "{}:id/view_learing_center_mearsure_history_rl".format(appPackage)) card_record_id = ( By.ID, "{}:id/view_learing_center_card_record_rl".format(appPackage)) ''' 任务数及总任务数 ''' task_index_lists_id = ( By.ID, "{}:id/fragment_course_task_index".format(appPackage)) task_all_lists_close_btn_id = ( By.ID, "{}:id/dialog_class_view_close_btn".format(appPackage)) task_all_lists_ids = (By.ID, "{}:id/fragment_exercise_item_tv".format(appPackage)) ''' 我的练习,查看更多 ''' # my_ex_id = (By.ID, '{}:id/view_course_task_my_exercise_tv'.format(appPackage)) my_ex_id = (By.ID, "{}:id/view_course_task_my_course_tv".format(appPackage)) # com.langlib.ncee: id / view_course_task_my_course_tv check_more_id = ( By.ID, "{}:id/view_course_task_my_exercise_more_tv".format(appPackage)) ''' 任务列表 ''' exercise_list_ids = (By.ID, "{}:id/exercise_list_item_tv".format(appPackage)) ''' 学习中心页动作 ''' def return_learning_center_page_source(self): return self.page_source def click_course_name(self): self.find_element(*self.course_name_id).click() def click_course_list_close(self): self.find_element(*self.course_list_close_id).click() def click_fir_to_learn(self): self.find_elements(*self.course_lists_ids)[0].click() def click_sec_to_learn(self): self.find_elements(*self.course_lists_ids)[1].click() def click_thi_to_learn(self): self.find_elements(*self.course_lists_ids)[2].click() def click_study_report(self): self.find_element(*self.study_report_id).click() def click_test_history(self): self.find_element(*self.test_history_id).click() def click_card_record(self): self.find_element(*self.card_record_id).click() def click_task_index(self): self.find_element(*self.task_index_lists_id).click() def get_current_total_task(self): return self.getText(self.find_element(*self.task_index_lists_id)) def click_task_view_close(self): self.find_element(*self.task_all_lists_close_btn_id).click() def click_task_all_lists_index(self, index): self.find_elements(*self.task_all_lists_ids)[int(index) - 1].click() def click_my_exc_check_more(self): self.find_element(*self.check_more_id).click() def return_all_test_ele(self): # exercies = [] eles = self.find_elements(*self.exercise_list_ids) # for ele in eles: # exercies.append(self.getText(ele)) return eles def get_my_ex_loc(self): ele = self.find_element(*self.my_ex_id) # print(self.getEleSize(ele)) # print(self.getEleLocation(ele)) x = self.getEleLocation(ele).get('x') y = self.getEleLocation(ele).get('y') # print(x, y) # w,h = self.getEleLocation(ele) # print(x, y, w, h) return int(x), int(y)
class CTWordsListPage1(AllBasePage): appPackage = get_appPackage() ''' 完型训练第一步: ''' cloze_test_step1_words_list_id = ( By.ID, "{}:id/fragment_word_profi_list_head_item_tv1".format(appPackage)) cloze_test_step1_next_btn_id = ( By.ID, "{}:id/fragment_cloze_test_detail_next_step_tv".format(appPackage)) ''' 完型训练第二步: ''' cloze_test_ques_num_id = ( By.ID, '{}:id/fragment_cloze_test_detail_item_index_tv'.format(appPackage)) cloze_test_part1_title_id = ( By.ID, "{}:id/fragment_cloze_test_detail_item_index_1_tv".format(appPackage)) cloze_test_part1_items_ids = ( By.ID, "{}:id/fragment_cloze_test_detail_item_tv".format(appPackage)) cloze_test_part2_title_id = ( By.ID, "{}:id/fragment_cloze_test_detail_item_index_2_tv".format(appPackage)) cloze_test_part2_items_a_id = ( By.ID, "{}:id/fragment_cloze_test_detail_item_rbn_a".format(appPackage)) cloze_test_part2_items_b_id = ( By.ID, "{}:id/fragment_cloze_test_detail_item_rbn_b".format(appPackage)) cloze_test_part2_items_c_id = ( By.ID, "{}:id/fragment_cloze_test_detail_item_rbn_c".format(appPackage)) cloze_test_part2_items_d_id = ( By.ID, "{}:id/fragment_cloze_test_detail_item_rbn_d".format(appPackage)) cloze_test_part2_next_btn_id = ( By.ID, "{}:id/fragment_cloze_test_detail_next_quest_tv".format(appPackage)) cloze_test_finish_btn_id = ( By.ID, "{}:id/fragment_cloze_test_detail_done_tv".format(appPackage)) def click_cloze_test_step1_next_btn(self): self.find_element(*self.cloze_test_step1_next_btn_id).click() def get_cloze_test_curr_ques(self): # self.getText(self.find_element(*self.step1_word_list_id)) # print(self.getText(self.find_element(*self.cloze_test_ques_num_id))) curr_num = int( self.getText( self.find_element(*self.cloze_test_ques_num_id)).strip(".")) return curr_num def click_cloze_test_part1_answer(self, answer=None): eles = self.find_elements(*self.cloze_test_part1_items_ids) if answer: for ele in eles: if answer in self.getText(ele): ele.click() break else: eles[0].click() def cloze_test_choose_answer(self, answers=None): x, y = self.getSize() self.swipeUp(x * 0.5, y * 0.8, 0, 100) sleep(5) if answers.lower() == 'a': self.find_element(*self.cloze_test_part2_items_a_id).click() if answers.lower() == 'b': self.find_element(*self.cloze_test_part2_items_b_id).click() if answers.lower() == 'c': self.find_element(*self.cloze_test_part2_items_c_id).click() if answers.lower() == 'd': self.find_element(*self.cloze_test_part2_items_d_id).click() def click_cloze_test_step2_next_btn(self): self.find_element(*self.cloze_test_part2_next_btn_id).click() def click_cloze_test_finish_btn(self): self.find_element(*self.cloze_test_finish_btn_id).click()
class SC75Step2Page(SC75Step1Page1): appPackage = get_appPackage() ''' 七选五训练Step2 ''' sc_75_text_view_id = (By.ID, "com.langlib.ncee:id/text_view".format(appPackage)) sc_75_answers_id = ( By.ID, "{}:id/fragment_sen_cloze_vp_detail_viewpager".format(appPackage)) sc_75_fill_answer_classes = (By.CLASS_NAME, "android.widget.TextView") sc_75_submit_id = (By.ID, "{}:id/sen_cloze_commit_in_tv".format(appPackage)) sc_75_yeqian_claess = (By.CLASS_NAME, "android.widget.TextView") sc_75_finish_id = (By.ID, "{}:id/sen_cloze_done_tv".format(appPackage)) def sc_75_swipe_answers_down(self): ele = self.find_element(*self.sc_75_answers_id) print("Size", self.getEleSize(ele)) width = self.getEleSize(ele).get('width') height = self.getEleSize(ele).get('height') print("Location", self.getEleLocation(ele)) x = self.getEleLocation(ele).get('x') y = self.getEleLocation(ele).get('y') print("int(width * 0.5), y - 35, y + height", int(width * 0.5), y - 25, y + height) try: self.swipeDown(int(width * 0.5), y - 80, y + height, 100) # self.swipeDown(int(width * 0.5), y - 25, y + height, 200) self.swipeDown(int(width * 0.5), 919, y + height, 300) self.swipeDown(int(width * 0.5), 915, y + height, 200) except: self.swipeDown(725, 959, y + height, 300) finally: self.swipeDown(718, y - 75, y + height, 500) # def sc_75_choose_answer(self, answer): # answer = answer.lower() # for item in range(97, 107): # if answer == chr(item): # self.find_element(*(By.ID, "{}:id/popwindow_option_{}_tv".format(self.appPackage, answer))).click() # def sc_75_choose_answer2(self, answers): # print("SC75----2") # ele = self.find_element(*self.sc_75_text_view_id) # print("Size", self.getEleSize(ele)) # width = self.getEleSize(ele).get('width') # height = self.getEleSize(ele).get('height') # print("Location", self.getEleLocation(ele)) # x = self.getEleLocation(ele).get('x') # y = self.getEleLocation(ele).get('y') # print("===============>w,h", width, height) # print('x,y', x, y) # while True: # print("SC 75 2 True") # self.swipeUp(x, (y + height - 10), y, 10) # input_ele = "android.widget.TextView" # if input_ele in self.page_source(): # pass def sc_75_choose_answer(self, answers, nums=5): ele = self.find_element(*self.sc_75_answers_id) print("Size", self.getEleSize(ele)) width = self.getEleSize(ele).get('width') height = self.getEleSize(ele).get('height') print("Location", self.getEleLocation(ele)) x = self.getEleLocation(ele).get('x') y = self.getEleLocation(ele).get('y') fill_eles1 = [] all_fill_eles1 = self.find_elements(*self.sc_75_fill_answer_classes) for ele_text in all_fill_eles1: if not self.getText(ele_text): fill_eles1.append(ele_text) print("Answers", answers) print("空的数量", nums, len(fill_eles1)) if nums <= len(fill_eles1): for fill, answer in zip(fill_eles1[:int(nums)], answers[:(int(nums))]): fill.click() answer = answer.lower() for item in range(97, 104): if answer == chr(item): answer_id_ele = (By.ID, "{}:id/popwindow_option_{}_tv".format( self.appPackage, answer)) self.find_element(*answer_id_ele).click() if nums > len(fill_eles1): for fill1, answer1 in zip(fill_eles1[:(len(fill_eles1))], answers[:(len(fill_eles1))]): fill1.click() answer1 = answer1.lower() for item in range(97, 104): if answer1 == chr(item): answer_id_ele = (By.ID, "{}:id/popwindow_option_{}_tv".format( self.appPackage, answer1)) self.find_element(*answer_id_ele).click() sleep(5) ele3 = self.find_element(*self.sc_75_answers_id) print("Size", self.getEleSize(ele3)) width3 = self.getEleSize(ele3).get('width') height3 = self.getEleSize(ele3).get('height') print("Location", self.getEleLocation(ele3)) x3 = self.getEleLocation(ele3).get('x') y3 = self.getEleLocation(ele3).get('y') # self.driver.swipe(x, y1, x, y2, t) self.swipeUp(width3 * 0.4, y3 - 30, 0, 200) fill_eles2 = [] all_fill_eles2 = self.find_elements( *self.sc_75_fill_answer_classes) for ele_text2 in all_fill_eles2: if not self.getText(ele_text2): fill_eles2.append(ele_text2) for fill2, answer2 in zip(fill_eles2[(len(fill_eles1) - 5):], answers[(len(fill_eles1) - 5):]): fill2.click() answer2 = answer2.lower() for item in range(97, 104): if answer2 == chr(item): answer_id_ele = (By.ID, "{}:id/popwindow_option_{}_tv".format( self.appPackage, answer2)) self.find_element(*answer_id_ele).click() def click_sc_75_submit_btn(self): self.find_element(*self.sc_75_submit_id).click() def click_sc_75_finish_btn(self): self.find_element(*self.sc_75_finish_id).click() def click_sc_75_play(self): self.find_elements(*self.sc_75_yeqian_claess)[1].click() def click_sc_75_answer_ana(self): self.find_elements(*self.sc_75_yeqian_claess)[2].click() def click_sc_75_cont(self): self.find_elements(*self.sc_75_yeqian_claess)[3].click()