class Driver_Action: def __init__(self, driver): self.chrome = driver self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() # 管理画面のメニューのパスを返す self.admin_xpath_lists_xpath = self.admin_xpath_list_func.get_admin_menu_xpath( ) # 管理画面メニュー内の新規追加や編集などのパーツのパスを返す。 self.admin_list_parts_xpath = self.admin_xpath_list_func.get_admin_menu_list_parts_xpath( ) # 管理画面内の項目に関するパス(作成した固定ページリストとか) self.admin_parts_xpath = self.admin_xpath_list_func.get_admin_parts() #ユーザー側の画面のメニューとか、動画一覧などのパーツ self.public_parts_xpath = self.admin_xpath_list_func.get_public_parts() self.base_dir = self.basic_func.get_base_dir_path() def go_to_public_nav_menu(self, target_menu_name): nav_menu_list = self.public_parts_xpath['nav_list_xpath'] nav_menu_lists_elem = self.get_elements_by_xpath(nav_menu_list) lesson_list_elem = self.basic_func.get_target_element( nav_menu_lists_elem, target_menu_name) self.click_item(lesson_list_elem) def go_to_public_menu(self, target_menu_name): menu_list = self.public_parts_xpath['menu_list_xpath'] menu_lists_elem = self.get_elements_by_xpath(menu_list) lesson_list_elem = self.basic_func.get_target_element( menu_lists_elem, target_menu_name) self.click_item(lesson_list_elem) def get_element_by_xpath(self, element_xpath): return self.chrome.find_element_by_xpath(element_xpath) #要素を複数見つけて返す def get_elements_by_xpath(self, element_xpath): return self.chrome.find_elements_by_xpath(element_xpath) def click_item(self, element_name): element_name.click() def get_element_by_id(self, element_name): return self.chrome.find_element_by_id(element_name) def get_element_by_name(self, element_name): return self.chrome.find_element_by_name(element_name) def get_element_by_tag_name(self, element_name): return self.chrome.find_element_by_tag_name(element_name) def get_element_by_css_selector(self, selector_name): return self.chrome.find_element_by_css_selector(selector_name) def get_link(self, element_name): return element_name.get_attribute('href') def set_select_item(self, element, set_value): #選択したいvalueを指定する Select(element).select_by_visible_text(set_value) def submit(self, element): element.submit() def put_item_info(self, target_element, set_value): target_element.send_keys(set_value) def move_create_add_new_page(self, page_wp_menu, new_page_wp_menu): driver_action = ActionChains(self.chrome) main_menu_box = self.chrome.find_element_by_xpath(page_wp_menu) driver_action.move_to_element(main_menu_box).perform() sub_menu_box = self.chrome.find_element_by_xpath( new_page_wp_menu).get_attribute('href') self.chrome.get(sub_menu_box) def clear_item_info(self, target_element): target_element.clear() def stop(self, stop_num): time.sleep(stop_num) #管理画面のメニューを移動する。 def move_admin_page(self, main_menu_path, sub_menu_path): driver_action = ActionChains(self.chrome) main_menu_box = self.chrome.find_element_by_xpath(main_menu_path) driver_action.move_to_element(main_menu_box).perform() sub_menu_box = self.chrome.find_element_by_xpath( sub_menu_path).get_attribute('href') self.chrome.get(sub_menu_box) #一覧から選んで移動する def single_move_admin_page(self, main_menu_path): main_menu_box = self.chrome.find_element_by_xpath( main_menu_path).get_attribute('href') self.chrome.get(main_menu_box) #一覧から選んで移動する def go_to_add_new_page(self): add_new_btn_xpath = '//div[@id="wpbody-content"]/div[@class="wrap"]/a[@class="page-title-action"][text()="新規追加"]' add_new_btn = self.chrome.find_element_by_xpath(add_new_btn_xpath) add_new_btn.click() #固定ページや登録ページにあるリンクを取得する。 def edit_page_link(self): link_xpath = '//div[@id="titlediv"]/div[@class="inside"]/div[@id="edit-slug-box"]/span[@id="sample-permalink"]/a' page_link = self.chrome.find_element_by_xpath( link_xpath).get_attribute('href') return page_link #固定ページの公開ボタンをクリックする。 def click_publish_btn(self): publish_btn_path = '//div[@id="publishing-action"]/input[@id="publish"]' publish_btn = self.chrome.find_element_by_xpath(publish_btn_path) try: WebDriverWait(self.chrome, 3).until(EC.alert_is_present()) alert = self.chrome.switch_to.alert alert.accept() except TimeoutException: pass publish_btn.click() def click_update_btn(self): update_post_btn_xpath = self.admin_parts_xpath['update_post_btn'] update_post_btn_elem = self.get_element_by_xpath(update_post_btn_xpath) try: WebDriverWait(self.chrome, 2).until( EC.alert_is_present(), 'Timed out waiting for PA creation ' + 'confirmation popup to appear.') alert = self.chrome.switch_to.alert alert.accept() print("alert accepted") except TimeoutException: print("no alert") self.click_item(update_post_btn_elem) def move_to_page_by_link(self, driver, pag_link): driver.get(pag_link) def quit(self, driver): driver.quit() def scroll_half_down(self, driver): height = driver.execute_script("return document.body.scrollHeight") height = height // 4 for x in range(1, height): driver.execute_script("window.scrollTo(0, " + str(x) + ");") # 下にゆっくりスクール def scroll_down(self, driver): height = driver.execute_script("return document.body.scrollHeight") height = height // 2 for x in range(1, height): driver.execute_script("window.scrollTo(0, " + str(x) + ");") #TOPに一瞬で戻る def scroll_top(self, driver): driver.execute_script("window.scrollTo(0, 0);") def click_permalink(self): post_permalink_xpath = self.admin_parts_xpath['post_permalink'] post_permalink_elem = self.get_element_by_xpath(post_permalink_xpath) self.click_item(post_permalink_elem) def select_item_by_text(self, tareget_element, target_text): Select(tareget_element).select_by_visible_text(target_text)
class Public_Calendar: def __init__(self, driver): self.chrome = driver self.driver_func = Driver_Action(driver) self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() # 管理画面のメニューのパスを返す self.admin_xpath_lists_xpath = self.admin_xpath_list_func.get_admin_menu_xpath( ) # 管理画面メニュー内の新規追加や編集などのパーツのパスを返す。 self.admin_list_parts_xpath = self.admin_xpath_list_func.get_admin_menu_list_parts_xpath( ) # 管理画面内の項目に関するパス(作成した固定ページリストとか) self.admin_parts_xpath = self.admin_xpath_list_func.get_admin_parts() #ユーザー画面内の項目に関するパス self.public_parts_xpath = self.admin_xpath_list_func.get_public_parts() self.base_dir = self.basic_func.get_base_dir_path() self.calendar_page_url = self.basic_func.get_calendar_page_url() def go_to_calendar_page(self): self.driver_func.move_to_page_by_link(self.chrome, self.calendar_page_url) def click_calendar(self, target_calendar_name): calendar_cell_xpath = self.public_parts_xpath[ 'calendar_cell_list_xpath'] calendar_cells = self.driver_func.get_elements_by_xpath( calendar_cell_xpath) calendar_cell_elem = self.basic_func.get_target_element( calendar_cells, target_calendar_name) self.driver_func.click_item(calendar_cell_elem) def go_to_calendar_register_page(self): calendar_register_xpath = self.public_parts_xpath[ 'calendar_cell_register_xpath'] calendar_register_elem = self.driver_func.get_element_by_xpath( calendar_register_xpath) self.driver_func.click_item(calendar_register_elem) def put_calendar_register_info(self): date_time1_elem = self.driver_func.get_element_by_name('date_time1') date_time2_elem = self.driver_func.get_element_by_name('date_time2') comment_elem = self.driver_func.get_element_by_name('comment') submit_btn_elem = self.driver_func.get_element_by_id('submit') self.driver_func.put_item_info(date_time1_elem, '13:00') self.driver_func.put_item_info(date_time2_elem, '16:00') self.driver_func.put_item_info(comment_elem, 'かれんだーてすと') self.driver_func.click_item(submit_btn_elem) def go_to_calendar_edit_page(self): calendar_edit_xpath = self.public_parts_xpath[ 'calendar_cell_edit_xpath'] calendar_edit_elem = self.driver_func.get_element_by_xpath( calendar_edit_xpath) self.driver_func.click_item(calendar_edit_elem) def put_calendar_edit_info(self): date_time1_elem = self.driver_func.get_element_by_name('date_time1') date_time2_elem = self.driver_func.get_element_by_name('date_time2') comment_elem = self.driver_func.get_element_by_name('comment') submit_btn_elem = self.driver_func.get_element_by_id('submit') self.driver_func.clear_item_info(date_time1_elem) self.driver_func.put_item_info(date_time1_elem, '13:00') self.driver_func.clear_item_info(date_time2_elem) self.driver_func.put_item_info(date_time2_elem, '16:00') self.driver_func.clear_item_info(comment_elem) self.driver_func.put_item_info(comment_elem, 'かれんだーてすと') self.driver_func.click_item(submit_btn_elem)
class Public_Member_Rank: def __init__(self, driver): self.chrome = driver self.driver_func = Driver_Action(driver) self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() # 管理画面のメニューのパスを返す self.admin_xpath_lists = self.admin_xpath_list_func.get_admin_menu_xpath( ) # 管理画面メニュー内の新規追加や編集などのパーツのパスを返す。 self.admin_list_parts_xpath = self.admin_xpath_list_func.get_admin_menu_list_parts_xpath( ) # 管理画面内の項目に関するパス(作成した固定ページリストとか) self.admin_parts_xpath = self.admin_xpath_list_func.get_admin_parts() #ユーザー画面内の項目に関するパス self.public_parts_xpath = self.admin_xpath_list_func.get_public_parts() self.base_dir = self.basic_func.get_base_dir_path() self.lesson_list_page_url = self.basic_func.get_lesson_list_page() def go_to_lesson_list_page(self): self.driver_func.move_to_page_by_link(self.chrome, self.lesson_list_page_url) def check_element_page(self): self.go_to_element_lesson_list_page() all_lesson_title_list_xpath = self.public_parts_xpath[ 'all_lesson_title_list_xpath'] lesson_detail_link = self.public_parts_xpath['lesson_detail_lists'] block_page_list = ['英語リスニング(初級講座)', '英語スピーキング(初級講座)'] for block_page_text in block_page_list: lesson_detail_elem = self.driver_func.get_elements_by_xpath( lesson_detail_link) all_lesson_title_lists_elem = self.driver_func.get_elements_by_xpath( all_lesson_title_list_xpath) lesson_detail_page_link = self.basic_func.get_target_link_element( all_lesson_title_lists_elem, lesson_detail_elem, block_page_text) self.driver_func.click_item(lesson_detail_page_link) self.driver_func.stop(2) self.go_to_lesson_list_page() self.go_to_element_lesson_list_page() def check_is_user_get_ranked(self): try: pay_pal_btn_xpath = '//button[@id="paypal_btn"]' pay_pal_btn = self.driver_func.get_element_by_xpath( pay_pal_btn_xpath) except NoSuchElementException: #特に問題ない場合はtrueを返す。 return True else: #ボタンが存在する場合は、ユーザーが会員楽を取得できていないので、falseを返してもう一度処理させる。 return False def go_to_element_lesson_list_page(self): all_lesson_list = self.public_parts_xpath['all_lesson_list_xpath'] all_lesson_list_link = self.public_parts_xpath[ 'all_lesson_list_link_xpath'] all_lesson_lists_elem = self.driver_func.get_elements_by_xpath( all_lesson_list) all_lesson_lists_link_elem = self.driver_func.get_elements_by_xpath( all_lesson_list_link) #概要ページから該当する名前順にリンクの要素を取得 link_elem = self.basic_func.get_target_link_element( all_lesson_lists_elem, all_lesson_lists_link_elem, '英語初級講座') #リンクを取得 lesson_detail_link = self.driver_func.get_link(link_elem) #リンクに飛ぶ self.driver_func.move_to_page_by_link(self.chrome, lesson_detail_link) def check_advanced_page(self): self.go_to_advanced_lesson_list_page() all_lesson_title_list_xpath = self.public_parts_xpath[ 'all_lesson_title_list_xpath'] lesson_detail_link = self.public_parts_xpath['lesson_detail_lists'] block_page_list = ['英語リスニング(上級講座)', '英語スピーキング(上級講座)'] for block_page_text in block_page_list: lesson_detail_elem = self.driver_func.get_elements_by_xpath( lesson_detail_link) all_lesson_title_lists_elem = self.driver_func.get_elements_by_xpath( all_lesson_title_list_xpath) lesson_detail_page_link = self.basic_func.get_target_link_element( all_lesson_title_lists_elem, lesson_detail_elem, block_page_text) self.driver_func.click_item(lesson_detail_page_link) self.driver_func.stop(2) self.go_to_lesson_list_page() self.go_to_advanced_lesson_list_page() def go_to_advanced_lesson_list_page(self): all_lesson_list = self.public_parts_xpath['all_lesson_list_xpath'] all_lesson_list_link = self.public_parts_xpath[ 'all_lesson_list_link_xpath'] all_lesson_lists_elem = self.driver_func.get_elements_by_xpath( all_lesson_list) all_lesson_lists_link_elem = self.driver_func.get_elements_by_xpath( all_lesson_list_link) #概要ページから該当する名前順にリンクの要素を取得 link_elem = self.basic_func.get_target_link_element( all_lesson_lists_elem, all_lesson_lists_link_elem, '英語上級講座') #リンクを取得 lesson_detail_link = self.driver_func.get_link(link_elem) #リンクに飛ぶ self.driver_func.move_to_page_by_link(self.chrome, lesson_detail_link) def check_lesson_overview_block_page(self): all_lesson_list = self.public_parts_xpath['all_lesson_list_xpath'] all_lesson_list_link = self.public_parts_xpath[ 'all_lesson_list_link_xpath'] self.driver_func.stop(2) all_lesson_lists_elem = self.driver_func.get_elements_by_xpath( all_lesson_list) all_lesson_lists_link_elem = self.driver_func.get_elements_by_xpath( all_lesson_list_link) #概要ページから該当する名前順にリンクの要素を取得 link_elem = self.basic_func.get_target_link_element( all_lesson_lists_elem, all_lesson_lists_link_elem, '英語上級講座') #リンクを取得 lesson_detail_link = self.driver_func.get_link(link_elem) #リンクに飛ぶ self.driver_func.move_to_page_by_link(self.chrome, lesson_detail_link) def set_user_status_to_gold(self, target_user_name): self.go_to_user_list_page() user_list_path = "//form/table[@class='wp-list-table widefat fixed striped users']/tbody[@id='the-list']/tr/td[@class='username column-username has-row-actions column-primary']/strong/a" users_lists_path = self.driver_func.get_elements_by_xpath( user_list_path) target_user_link = self.basic_func.get_target_element( users_lists_path, target_user_name) self.driver_func.click_item(target_user_link) self.driver_func.scroll_down(self.chrome) self.select_registered_status() self.select_gold_rank() submit_btn = "//p[@class='submit']/input[@id='submit']" submit_btn_elem = self.driver_func.get_element_by_xpath(submit_btn) self.driver_func.click_item(submit_btn_elem) def go_to_user_list_page(self): admin_user_list_page_path = self.admin_xpath_lists[ 'admin_user_list_page_path'] admin_user_list_sub_page_path = self.admin_xpath_lists[ 'admin_user_list_sub_page_path'] # ユーザー一覧ページへ移動 self.driver_func.move_admin_page(admin_user_list_page_path, admin_user_list_sub_page_path) def select_registered_status(self): user_register_status_path = "//div[@id='wpbody-content']/div[@id='profile-page']/form[@id='your-profile']/table[@class='form-table'][6]/tbody/tr[2]/td/select[@id='user_status']" user_register_status_element = self.driver_func.get_element_by_xpath( user_register_status_path) self.driver_func.select_item_by_text(user_register_status_element, "本登録") def select_gold_rank(self): select_box_rank = "//div[@id='wpcontent']/div[@id='wpbody']/div[@id='wpbody-content']/div[@id='profile-page']/form[@id='your-profile']/table[@class='form-table'][8]/tbody/tr[1]/td/select[@id='gp_user_rank']" rank_select_element = self.driver_func.get_element_by_xpath( select_box_rank) self.driver_func.select_item_by_text(rank_select_element, "ゴールド会員") def go_to_admin_top_page(self, target_url): self.driver_func.move_to_page_by_link(self.chrome, target_url + 'wp-admin/')
class Admin_Add_Quiz: def __init__(self, driver): self.chrome = driver self.driver_func = Driver_Action(driver) self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() # 管理画面のメニューのパスを返す self.admin_xpath_lists_xpath = self.admin_xpath_list_func.get_admin_menu_xpath( ) # 管理画面メニュー内の新規追加や編集などのパーツのパスを返す。 self.admin_list_parts_xpath = self.admin_xpath_list_func.get_admin_menu_list_parts_xpath( ) # 管理画面内の項目に関するパス(作成した固定ページリストとか) self.admin_parts_xpath = self.admin_xpath_list_func.get_admin_parts() #ユーザー画面内の項目に関するパス self.public_parts_xpath = self.admin_xpath_list_func.get_public_parts() self.base_dir = self.basic_func.get_base_dir_path() def set_quiz_to_page(self): lesson_details = { 'beginner_lesson_details': { 'first_lesson_details': { 'post_title': '英語文法(初級講座)', 'page_lock': '1', 'quiz_num': 6, 'quiz_correct_num': 5, 'quiz_text': self.base_dir + '/assets/texts/quiz/quiz.txt', 'first_quiz_answer': 'answer_1', 'quiz_answer': { 'answer_2', 'answer_3', 'answer_4', 'answer_5', 'answer_6', } }, 'second_lesson_details': { 'post_title': '英語リスニング(初級講座)', 'page_lock': '2', 'quiz_num': 2, 'quiz_correct_num': 2, 'quiz_text': self.base_dir + '/assets/texts/quiz/quiz.txt', 'first_quiz_answer': 'answer_1', 'quiz_answer': { 'answer_2', } }, 'third_lesson_details': { 'post_title': '英語リーディング(初級講座)', 'page_lock': '2', 'quiz_num': 1, 'quiz_correct_num': 1, 'quiz_text': self.base_dir + '/assets/texts/quiz/quiz.txt', 'first_quiz_answer': 'answer_1', 'quiz_answer': {} }, 'fourth_lesson_details': { 'post_title': '英語スピーキング(初級講座)', 'page_lock': '2', 'quiz_num': 4, 'quiz_correct_num': 2, 'quiz_text': self.base_dir + '/assets/texts/quiz/quiz.txt', 'first_quiz_answer': 'answer_1', 'quiz_answer': { 'answer_2', 'answer_3', 'answer_4', } }, 'fifth_lesson_details': { 'post_title': '英語単語(初級講座)', 'page_lock': '2', 'quiz_num': 4, 'quiz_correct_num': 3, 'quiz_text': self.base_dir + '/assets/texts/quiz/quiz.txt', 'first_quiz_answer': 'answer_1', 'quiz_answer': { 'answer_2', 'answer_3', 'answer_4', } } }, 'normal_lesson_details': { 'first_lesson_details': { 'post_title': '英語文法(中級講座)', 'page_lock': '1', 'quiz_num': 2, 'quiz_correct_num': 1, 'quiz_text': self.base_dir + '/assets/texts/quiz/quiz.txt', 'first_quiz_answer': 'answer_1', 'quiz_answer': { 'answer_2', } }, 'second_lesson_details': { 'post_title': '英語リスニング(中級講座)', 'page_lock': '2', 'quiz_num': 1, 'quiz_correct_num': 1, 'quiz_text': self.base_dir + '/assets/texts/quiz/quiz.txt', 'first_quiz_answer': 'answer_1', 'quiz_answer': {} }, 'third_lesson_details': { 'post_title': '英語リーディング(中級講座)', 'page_lock': '2', 'quiz_num': 7, 'quiz_correct_num': 5, 'quiz_text': self.base_dir + '/assets/texts/quiz/quiz.txt', 'first_quiz_answer': 'answer_1', 'quiz_answer': { 'answer_2', 'answer_3', 'answer_4', 'answer_5', 'answer_6', 'answer_7', } }, 'fourth_lesson_details': { 'post_title': '英語スピーキング(中級講座)', 'page_lock': '2', 'quiz_num': 6, 'quiz_correct_num': 5, 'quiz_text': self.base_dir + '/assets/texts/quiz/quiz.txt', 'first_quiz_answer': 'answer_1', 'quiz_answer': { 'answer_2', 'answer_3', 'answer_4', 'answer_5', 'answer_6', } }, 'fifth_lesson_details': { 'post_title': '英語単語(中級講座)', 'page_lock': '2', 'quiz_num': 9, 'quiz_correct_num': 8, 'quiz_text': self.base_dir + '/assets/texts/quiz/quiz.txt', 'first_quiz_answer': 'answer_1', 'quiz_answer': { 'answer_2', 'answer_3', 'answer_4', 'answer_5', 'answer_6', 'answer_7', 'answer_8', 'answer_9', } } }, 'advanced_lesson_details': { 'first_lesson_details': { 'post_title': '英語文法(上級講座)', 'page_lock': '1', 'quiz_num': 4, 'quiz_correct_num': 3, 'quiz_text': self.base_dir + '/assets/texts/quiz/quiz.txt', 'first_quiz_answer': 'answer_1', 'quiz_answer': { 'answer_2', 'answer_3', 'answer_4', } }, 'second_lesson_details': { 'post_title': '英語リスニング(上級講座)', 'page_lock': '2', 'quiz_num': 5, 'quiz_correct_num': 1, 'quiz_text': self.base_dir + '/assets/texts/quiz/quiz.txt', 'first_quiz_answer': 'answer_1', 'quiz_answer': { 'answer_2', 'answer_3', 'answer_4', 'answer_5', } }, 'third_lesson_details': { 'post_title': '英語リーディング(上級講座)', 'page_lock': '2', 'quiz_num': 1, 'quiz_correct_num': 1, 'quiz_text': self.base_dir + '/assets/texts/quiz/quiz.txt', 'first_quiz_answer': 'answer_1', 'quiz_answer': {} }, 'fourth_lesson_details': { 'post_title': '英語スピーキング(上級講座)', 'page_lock': '2', 'quiz_num': 5, 'quiz_correct_num': 3, 'quiz_text': self.base_dir + '/assets/texts/quiz/quiz.txt', 'first_quiz_answer': 'answer_1', 'quiz_answer': { 'answer_2', 'answer_3', 'answer_4', 'answer_5', } }, 'fifth_lesson_details': { 'post_title': '英語単語(上級講座)', 'page_lock': '2', 'quiz_num': 5, 'quiz_correct_num': 4, 'quiz_text': self.base_dir + '/assets/texts/quiz/quiz.txt', 'first_quiz_answer': 'answer_1', 'quiz_answer': { 'answer_2', 'answer_3', 'answer_4', 'answer_5', } } } } lesson_details_test = { 'beginner_lesson_details': { 'second_lesson_details': { 'post_title': '英語単語(上級講座)', 'page_lock': '2', 'quiz_num': 5, 'quiz_correct_num': 4, 'quiz_text': self.base_dir + '/assets/texts/quiz/quiz.txt', 'first_quiz_answer': 'answer_1', 'quiz_answer': { 'answer_2', 'answer_3', 'answer_4', 'answer_5', } } } } page_list_xpath = self.admin_parts_xpath['page_list_xpath'] page_list_elem = self.driver_func.get_elements_by_xpath( page_list_xpath) for details_item_name, details_item_value in lesson_details.items(): for list_name, lesson_details_lists in details_item_value.items(): self.add_info(lesson_details_lists) def reset_info(self, lesson_details_lists): page_list_xpath = self.admin_parts_xpath['page_list_xpath'] page_list_elem = self.driver_func.get_elements_by_xpath( page_list_xpath) no_quiz_btn_xpath = self.admin_parts_xpath['no_quiz_btn_xpath'] quiz_textarea_xpath = self.admin_parts_xpath['quiz_textarea_xpath'] quiz_input_xpath = self.admin_parts_xpath['quiz_input_xpath'] add_quiz_btn_xpath = self.admin_parts_xpath['add_quiz_btn_xpath'] quiz_first_input_xpath = self.admin_parts_xpath[ 'quiz_first_input_xpath'] answer_radio_xpath = self.admin_parts_xpath['answer_radio_xpath'] first_answer_radio_xpath = self.admin_parts_xpath[ 'first_answer_radio_xpath'] current_page_btn_xpath = self.admin_parts_xpath[ 'current_page_btn_xpath'] update_post_btn_xpath = self.admin_parts_xpath['update_post_btn'] target_text = lesson_details_lists['post_title'] target_elem = self.basic_func.get_target_element( page_list_elem, target_text) self.driver_func.click_item(target_elem) if (lesson_details_lists['page_lock'] == '2'): self.driver_func.stop(1) guild_press_quiz_btn_elem = self.driver_func.get_element_by_xpath( no_quiz_btn_xpath) self.driver_func.click_item(guild_press_quiz_btn_elem) self.driver_func.scroll_top(self.chrome) update_post_btn_elem = self.driver_func.get_element_by_xpath( update_post_btn_xpath) self.driver_func.click_item(update_post_btn_elem) self.driver_func.stop(1) #投稿リストを表示する current_page_btn_elem = self.driver_func.get_element_by_xpath( current_page_btn_xpath) self.driver_func.click_item(current_page_btn_elem) def add_info(self, lesson_details_lists): page_list_xpath = self.admin_parts_xpath['page_list_xpath'] page_list_elem = self.driver_func.get_elements_by_xpath( page_list_xpath) quiz_btn_xpath = self.admin_parts_xpath['quiz_btn_xpath'] quiz_textarea_xpath = self.admin_parts_xpath['quiz_textarea_xpath'] quiz_input_xpath = self.admin_parts_xpath['quiz_input_xpath'] add_quiz_btn_xpath = self.admin_parts_xpath['add_quiz_btn_xpath'] quiz_first_input_xpath = self.admin_parts_xpath[ 'quiz_first_input_xpath'] answer_radio_xpath = self.admin_parts_xpath['answer_radio_xpath'] first_answer_radio_xpath = self.admin_parts_xpath[ 'first_answer_radio_xpath'] current_page_btn_xpath = self.admin_parts_xpath[ 'current_page_btn_xpath'] update_post_btn_xpath = self.admin_parts_xpath['update_post_btn'] target_text = lesson_details_lists['post_title'] target_elem = self.basic_func.get_target_element( page_list_elem, target_text) self.driver_func.click_item(target_elem) if (lesson_details_lists['page_lock'] == '2'): self.driver_func.scroll_down(self.chrome) guild_press_quiz_btn_elem = self.driver_func.get_element_by_xpath( quiz_btn_xpath) self.driver_func.click_item(guild_press_quiz_btn_elem) for x in range(len(lesson_details_lists['quiz_answer'])): add_quiz_btn_elem = self.driver_func.get_element_by_xpath( add_quiz_btn_xpath) self.driver_func.click_item(add_quiz_btn_elem) guild_press_quiz_textarea_elem = self.driver_func.get_element_by_xpath( quiz_textarea_xpath) content_text = self.basic_func.get_file_text( lesson_details_lists['quiz_text']) self.driver_func.put_item_info(guild_press_quiz_textarea_elem, content_text) quiz_input_elem = self.driver_func.get_elements_by_xpath( quiz_input_xpath) quiz_first_input_elem = self.driver_func.get_element_by_xpath( quiz_first_input_xpath) self.driver_func.put_item_info( quiz_first_input_elem, lesson_details_lists['first_quiz_answer']) first_answer_radio_elem = self.driver_func.get_element_by_xpath( first_answer_radio_xpath) answer_radio_elem = self.driver_func.get_elements_by_xpath( answer_radio_xpath) self.driver_func.click_item(first_answer_radio_elem) for i, (quiz_inputs_elem, quiz_answer) in enumerate( zip(quiz_input_elem, lesson_details_lists['quiz_answer'])): if ((i + 1) == lesson_details_lists['quiz_correct_num']): self.driver_func.click_item(answer_radio_elem[i]) self.driver_func.put_item_info(quiz_inputs_elem, quiz_answer) self.driver_func.scroll_top(self.chrome) update_post_btn_elem = self.driver_func.get_element_by_xpath( update_post_btn_xpath) self.driver_func.click_item(update_post_btn_elem) self.driver_func.stop(1) #投稿リストを表示する current_page_btn_elem = self.driver_func.get_element_by_xpath( current_page_btn_xpath) self.driver_func.click_item(current_page_btn_elem)
class Admin_Lesson_Lock: def __init__(self, driver): self.chrome = driver self.driver_func = Driver_Action( driver ) self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() # 管理画面のメニューのパスを返す self.admin_xpath_lists_xpath = self.admin_xpath_list_func.get_admin_menu_xpath() # 管理画面メニュー内の新規追加や編集などのパーツのパスを返す。 self.admin_list_parts_xpath = self.admin_xpath_list_func.get_admin_menu_list_parts_xpath() # 管理画面内の項目に関するパス(作成した固定ページリストとか) self.admin_parts_xpath = self.admin_xpath_list_func.get_admin_parts() #ユーザー画面内の項目に関するパス self.public_parts_xpath = self.admin_xpath_list_func.get_public_parts() self.base_dir = self.basic_func.get_base_dir_path() def set_block_page( self ): lesson_details = { 'beginner_lesson_details' : { 'first_lesson_details' : { 'post_title' : '英語文法(初級講座)', 'page_lock' : '1', }, 'second_lesson_details' : { 'post_title' : '英語リスニング(初級講座)', 'page_lock' : '2', }, 'third_lesson_details' : { 'post_title' : '英語リーディング(初級講座)', 'page_lock' : '2', }, 'fourth_lesson_details' : { 'post_title' : '英語スピーキング(初級講座)', 'page_lock' : '2', }, 'fifth_lesson_details' : { 'post_title' : '英語単語(初級講座)', 'page_lock' : '2', } }, 'normal_lesson_details' : { 'first_lesson_details' : { 'post_title' : '英語文法(中級講座)', 'page_lock' : '1', }, 'second_lesson_details' : { 'post_title' : '英語リスニング(中級講座)', 'page_lock' : '1', }, 'third_lesson_details' : { 'post_title' : '英語リーディング(中級講座)', 'page_lock' : '2', }, 'fourth_lesson_details' : { 'post_title' : '英語スピーキング(中級講座)', 'page_lock' : '2', }, 'fifth_lesson_details' : { 'post_title' : '英語単語(中級講座)', 'page_lock' : '1', } }, 'advanced_lesson_details' : { 'first_lesson_details' : { 'post_title' : '英語文法(上級講座)', 'page_lock' : '1', }, 'second_lesson_details' : { 'post_title' : '英語リスニング(上級講座)', 'page_lock' : '2', }, 'third_lesson_details' : { 'post_title' : '英語リーディング(上級講座)', 'page_lock' : '1', }, 'fourth_lesson_details' : { 'post_title' : '英語スピーキング(上級講座)', 'page_lock' : '1', }, 'fifth_lesson_details' : { 'post_title' : '英語単語(上級講座)', 'page_lock' : '1', } } } lesson_details_test = { 'beginner_lesson_details' : { 'second_lesson_details' : { 'post_title' : '英語リスニング(初級講座)', 'page_lock' : '2', } } } page_list_xpath = self.admin_parts_xpath['page_list_xpath'] page_list_elem = self.driver_func.get_elements_by_xpath( page_list_xpath ) for details_item_name, details_item_value in lesson_details.items(): for list_name,lesson_details_lists in details_item_value.items(): self.add_info( lesson_details_lists ) def add_info( self, lesson_details_lists ): page_list_xpath = self.admin_parts_xpath['page_list_xpath'] page_list_elem = self.driver_func.get_elements_by_xpath( page_list_xpath ) page_lock_radio_xpath = self.admin_parts_xpath['page_lock_radio_xpath'] current_page_btn_xpath = self.admin_parts_xpath['current_page_btn_xpath'] update_post_btn_xpath = self.admin_parts_xpath['update_post_btn'] target_text = lesson_details_lists['post_title'] target_elem = self.basic_func.get_target_element( page_list_elem, target_text ) self.driver_func.click_item( target_elem ) if( lesson_details_lists['page_lock'] == '2' ): self.driver_func.scroll_down( self.chrome ) guild_press_lock_page_elem = self.driver_func.get_element_by_xpath( page_lock_radio_xpath ) self.driver_func.click_item( guild_press_lock_page_elem ) self.driver_func.scroll_top( self.chrome ) update_post_btn_elem = self.driver_func.get_element_by_xpath( update_post_btn_xpath ) self.driver_func.click_item( update_post_btn_elem ) self.driver_func.stop( 1 ) #投稿リストを表示する current_page_btn_elem = self.driver_func.get_element_by_xpath( current_page_btn_xpath ) self.driver_func.click_item( current_page_btn_elem )