class Lesson_Over_View_Posts: 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() def add_lesson_over_view_page(self): #ポストのタイトル、テキストのディレクトリ、カテゴリー名、アイキャッチ画像 base_dir = self.basic_func.get_base_dir_path() lesson_overview = { 'first_lesson_over_view': { 'post_title': '英語初級講座', 'category_name': '英語初級講座', 'text_dir': base_dir + '/assets/texts/beginner/english-beginner.txt', 'img_dir': base_dir + '/assets/img/beginner/english-beginner-overview.png' }, 'second_lesson_over_view': { 'post_title': '英語中級講座', 'category_name': '英語中級講座', 'text_dir': base_dir + '/assets/texts/normal/english-normal.txt', 'img_dir': base_dir + '/assets/img/normal/english-normal-overview.png' }, 'third_lesson_over_view': { 'post_title': '英語上級講座', 'category_name': '英語上級講座', 'text_dir': base_dir + '/assets/texts/advanced/english-advanced.txt', 'img_dir': base_dir + '/assets/img/advanced/english-advanced-overview.png' } } for list_loop_name, lesson_overview_lists in lesson_overview.items(): self.create_new_lesson_over_view_page(lesson_overview_lists) def create_new_lesson_over_view_page(self, lesson_overview_lists): #要素を取得するためのXpathのリストを準備 lesson_list_path = self.admin_xpath_lists_xpath[ 'admin_guild_press_lesson_over_view_list_page_path'] add_new_lesson_list_path = self.admin_list_parts_xpath['add_new_page'] #Xpathで、各要素を取得 publish_post_btn = self.admin_parts_xpath['publish_post_btn'] add_new_element = self.driver_func.get_element_by_xpath( add_new_lesson_list_path) #新規追加をクリックして、移動。 self.driver_func.click_item(add_new_element) self.put_contents(lesson_overview_lists) self.upload_img(lesson_overview_lists) self.upload_thumbnail(lesson_overview_lists) #公開ボタンを押す。 # publish_post_btn_element = self.driver_func.get_element_by_xpath( publish_post_btn ) # self.driver_func.click_item( publish_post_btn_element ) self.driver_func.click_publish_btn() self.driver_func.stop(0.5) #一度他のページへ移動 self.driver_func.move_admin_page( self.admin_xpath_lists_xpath['admin_main_setting_path'], self.admin_xpath_lists_xpath['admin_sub_setting_path']) self.driver_func.move_admin_page( self.admin_xpath_lists_xpath[ 'admin_guild_press_lesson_over_view_page_path'], self.admin_xpath_lists_xpath[ 'admin_guild_press_lesson_over_view_list_page_path']) def put_contents(self, lesson_overview_lists): #各要素を取得して、入力していく。 post_title_element = self.driver_func.get_element_by_name('post_title') self.driver_func.put_item_info(post_title_element, lesson_overview_lists['post_title']) content_html = self.driver_func.get_element_by_id('content-html') self.driver_func.click_item(content_html) content_box_element = self.driver_func.get_element_by_name('content') content_text = self.basic_func.get_file_text( lesson_overview_lists['text_dir']) self.driver_func.put_item_info(content_box_element, content_text) category_box_element = self.driver_func.get_element_by_id( 'guild_lesson_category-add-toggle') self.driver_func.click_item(category_box_element) category_input_element = self.driver_func.get_element_by_name( 'newguild_lesson_category') self.driver_func.put_item_info(category_input_element, lesson_overview_lists['category_name']) category_submit_element = self.driver_func.get_element_by_id( 'guild_lesson_category-add-submit') self.driver_func.click_item(category_submit_element) def upload_img(self, lesson_overview_lists): media_submit_btn = self.admin_parts_xpath['media_submit_btn'] media_input_file = self.admin_parts_xpath['media_input_file'] self.driver_func.stop(0.5) #メディアを入れるためにボタンをクリックする。 media_btn_html = self.driver_func.get_element_by_id( 'insert-media-button') self.driver_func.click_item(media_btn_html) #画像をアップロード img_btn_element = self.driver_func.get_element_by_xpath( media_input_file) self.driver_func.put_item_info(img_btn_element, lesson_overview_lists['img_dir']) #アップロードが終了して、完了ボタンが押せるかチェック。 self.is_click_media_submit_btn() def upload_thumbnail(self, lesson_overview_lists): media_input_file = self.admin_parts_xpath['media_input_file'] media_add_eye_catch_btn = self.admin_parts_xpath[ 'media_add_eye_catch_btn'] media_eye_catch_submit_btn = self.admin_parts_xpath[ 'media_eye_catch_submit_btn'] #サムネイルを入れるためにボタンをクリックする。 media_btn_html = self.driver_func.get_element_by_xpath( media_add_eye_catch_btn) self.driver_func.click_item(media_btn_html) #画像をアップロード img_btn_element = self.driver_func.get_element_by_xpath( media_input_file) self.driver_func.put_item_info(img_btn_element, lesson_overview_lists['img_dir']) #アップロードした後しばらく待つ。 self.is_click_thumbnail_submit_btn() def is_click_thumbnail_submit_btn(self): media_eye_catch_submit_btn = self.admin_parts_xpath[ 'media_eye_catch_submit_btn'] self.driver_func.stop(0.5) eye_chactch_submit_element = self.driver_func.get_element_by_xpath( media_eye_catch_submit_btn) if (eye_chactch_submit_element.is_enabled()): print('is_click_thumbnail_submit_btn') self.driver_func.click_item(eye_chactch_submit_element) else: print('no is_click_thumbnail_submit_btn') self.is_click_thumbnail_submit_btn() def is_click_media_submit_btn(self): media_submit_btn = self.admin_parts_xpath['media_submit_btn'] self.driver_func.stop(0.5) img_submit_element = self.driver_func.get_element_by_xpath( media_submit_btn) if (img_submit_element.is_enabled()): self.driver_func.click_item(img_submit_element) else: self.is_click_media_submit_btn()
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_Many_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.base_dir = self.basic_func.get_base_dir_path() def create_public_calendar_page(self): page_lists = self.driver_func.get_elements_by_xpath( self.admin_parts_xpath['page_list_xpath']) is_page_created = self.basic_func.check_page_is_created( 'カレンダーページ', page_lists) return is_page_created def go_to_register_calendar_list_page(self): guild_press_register_calendar_elements = self.driver_func.get_elements_by_xpath( self.admin_parts_xpath['guild_press_tab_xpath']) self.driver_func.click_item(guild_press_register_calendar_elements[1]) def go_to_register_calendar_page(self, target_calendar_xpath): try: register = self.driver_func.get_element_by_xpath( target_calendar_xpath) except Exception as e: return False else: self.driver_func.click_item(register) return True def go_to_calendar_email_page(self): guild_press_register_calendar_elements = self.driver_func.get_elements_by_xpath( self.admin_parts_xpath['guild_press_tab_xpath']) self.driver_func.click_item(guild_press_register_calendar_elements[2]) def put_calendar_info(self): dt_now = datetime.datetime.now() calendar_title_element = self.driver_func.get_element_by_name('title') self.driver_func.put_item_info(calendar_title_element, 'カレンダー予約' + str(dt_now.microsecond)) calendar_max_element = self.driver_func.get_element_by_name('max_num') self.driver_func.put_item_info(calendar_max_element, '4') calendar_date_time1_element = self.driver_func.get_element_by_name( 'date_time1') self.driver_func.put_item_info(calendar_date_time1_element, '10:00') calendar_date_time2_element = self.driver_func.get_element_by_name( 'date_time2') self.driver_func.put_item_info(calendar_date_time2_element, '19:00') submit_btn_element = self.driver_func.get_element_by_name('submit') self.driver_func.click_item(submit_btn_element) return 'カレンダー予約' + str(dt_now.microsecond) def put_calendar_email_info(self): self.put_calendar_email_user_info() self.put_calendar_email_admin_info() submit_btn_element = self.driver_func.get_element_by_name('submit') self.driver_func.click_item(submit_btn_element) def put_calendar_email_user_info(self): guild_press_personal_from_name = self.driver_func.get_element_by_name( 'guild_press_personal_from_name') self.driver_func.clear_item_info(guild_press_personal_from_name) self.driver_func.put_item_info(guild_press_personal_from_name, 'ユーザー側カレンダーテスト') guild_press_personal_from_email = self.driver_func.get_element_by_name( 'guild_press_personal_from_email') self.driver_func.clear_item_info(guild_press_personal_from_email) self.driver_func.put_item_info(guild_press_personal_from_email, 'メールアドレス記載') guild_press_personal_from_cc_email = self.driver_func.get_element_by_name( 'guild_press_personal_CC_email') self.driver_func.clear_item_info(guild_press_personal_from_cc_email) self.driver_func.put_item_info(guild_press_personal_from_cc_email, 'メールアドレス記載') guild_press_personal_from_bcc_email = self.driver_func.get_element_by_name( 'guild_press_personal_BCC_email') self.driver_func.clear_item_info(guild_press_personal_from_bcc_email) self.driver_func.put_item_info(guild_press_personal_from_bcc_email, 'メールアドレス記載') guild_press_personal_from_subject_email = self.driver_func.get_element_by_name( 'guild_press_personal_from_subject') self.driver_func.clear_item_info( guild_press_personal_from_subject_email) self.driver_func.put_item_info(guild_press_personal_from_subject_email, 'メールテスト(ユーザー側)') guild_press_personal_from_text_email = self.driver_func.get_element_by_name( 'guild_press_personal_email_message') self.driver_func.clear_item_info(guild_press_personal_from_text_email) content_text = self.basic_func.get_file_text( self.base_dir + '/assets/texts/calendar/calendar_email_user.txt') self.driver_func.put_item_info(guild_press_personal_from_text_email, content_text) def put_calendar_email_admin_info(self): guild_press_admin_from_text_name = self.driver_func.get_element_by_name( 'guild_press_admin_from_name') self.driver_func.clear_item_info(guild_press_admin_from_text_name) self.driver_func.put_item_info(guild_press_admin_from_text_name, 'ユーザー側カレンダーテスト') guild_press_admin_from_email = self.driver_func.get_element_by_name( 'guild_press_admin_from_email') self.driver_func.clear_item_info(guild_press_admin_from_email) self.driver_func.put_item_info(guild_press_admin_from_email, 'メールアドレス記載') guild_press_admin_from_cc_email = self.driver_func.get_element_by_name( 'guild_press_admin_CC_email') self.driver_func.clear_item_info(guild_press_admin_from_cc_email) self.driver_func.put_item_info(guild_press_admin_from_cc_email, 'メールアドレス記載') guild_press_admin_from_bcc_email = self.driver_func.get_element_by_name( 'guild_press_admin_BCC_email') self.driver_func.clear_item_info(guild_press_admin_from_bcc_email) self.driver_func.put_item_info(guild_press_admin_from_bcc_email, 'メールアドレス記載') guild_press_admin_from_subject_email = self.driver_func.get_element_by_name( 'guild_press_admin_from_subject') self.driver_func.clear_item_info(guild_press_admin_from_subject_email) self.driver_func.put_item_info(guild_press_admin_from_subject_email, 'ユーザーイベント登録メール(管理者側)') guild_press_admin_from_admin_email = self.driver_func.get_element_by_name( 'guild_press_admin_email_message') self.driver_func.clear_item_info(guild_press_admin_from_admin_email) content_text = self.basic_func.get_file_text( self.base_dir + '/assets/texts/calendar/calendar_email_admin.txt') self.driver_func.put_item_info(guild_press_admin_from_admin_email, content_text) def edit_calendar_info(self, target_title): dt_now = datetime.datetime.now() calendar_title_element = self.driver_func.get_element_by_name('title') self.driver_func.clear_item_info(calendar_title_element) self.driver_func.put_item_info(calendar_title_element, target_title) calendar_max_element = self.driver_func.get_element_by_name('max_num') self.driver_func.clear_item_info(calendar_max_element) self.driver_func.put_item_info(calendar_max_element, '5') calendar_date_time1_element = self.driver_func.get_element_by_name( 'date_time1') self.driver_func.clear_item_info(calendar_date_time1_element) self.driver_func.put_item_info(calendar_date_time1_element, '12:00') calendar_date_time2_element = self.driver_func.get_element_by_name( 'date_time2') self.driver_func.clear_item_info(calendar_date_time2_element) self.driver_func.put_item_info(calendar_date_time2_element, '22:00') submit_btn_element = self.driver_func.get_element_by_name('submit') self.driver_func.click_item(submit_btn_element) #put_calendar_infoで作ったやつを編集するために、リンクを探してクリックする。 def edit_calendar_info_page(self, target_title): guild_press_register_calendar_elements = self.driver_func.get_elements_by_xpath( '//div[@class="reservation-view"]/a[@class="calendar-title"]') for calendar_title_element in guild_press_register_calendar_elements: if (target_title == calendar_title_element.text): self.driver_func.click_item(calendar_title_element) self.edit_calendar_info(target_title)
class Lesson_Detail_Posts: 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() def add_lesson_detail_page(self): #ポストのタイトル、テキストのディレクトリ、カテゴリー名、アイキャッチ画像 base_dir = self.basic_func.get_base_dir_path() lesson_details = { 'beginner_lesson_details' : { 'first_lesson_details' : { 'post_title' : '英語文法(初級講座)', 'category_name' : '英語初級講座', 'text_dir' : base_dir+'/assets/texts/beginner/english-beginner-grammer.txt', 'img_dir' : base_dir+'/assets/img/beginner/english-beginner-grammer.png' }, 'second_lesson_details' : { 'post_title' : '英語リスニング(初級講座)', 'category_name' : '英語初級講座', 'text_dir' : base_dir+'/assets/texts/beginner/english-beginner-listening.txt', 'img_dir' : base_dir+'/assets/img/beginner/english-beginner-listening.png' }, 'third_lesson_details' : { 'post_title' : '英語リーディング(初級講座)', 'category_name' : '英語初級講座', 'text_dir' : base_dir+'/assets/texts/beginner/english-beginner-reading.txt', 'img_dir' : base_dir+'/assets/img/beginner/english-beginner-reading.png' }, 'fourth_lesson_details' : { 'post_title' : '英語スピーキング(初級講座)', 'category_name' : '英語初級講座', 'text_dir' : base_dir+'/assets/texts/beginner/english-beginner-speaking.txt', 'img_dir' : base_dir+'/assets/img/beginner/english-beginner-speaking.png' }, 'fifth_lesson_details' : { 'post_title' : '英語単語(初級講座)', 'category_name' : '英語初級講座', 'text_dir' : base_dir+'/assets/texts/beginner/english-beginner-words.txt', 'img_dir' : base_dir+'/assets/img/beginner/english-beginner-words.png' } }, 'normal_lesson_details' : { 'first_lesson_details' : { 'post_title' : '英語文法(中級講座)', 'category_name' : '英語中級講座', 'text_dir' : base_dir+'/assets/texts/normal/english-normal-grammer.txt', 'img_dir' : base_dir+'/assets/img/normal/english-normal-grammer.png' }, 'second_lesson_details' : { 'post_title' : '英語リスニング(中級講座)', 'category_name' : '英語中級講座', 'text_dir' : base_dir+'/assets/texts/normal/english-normal-listening.txt', 'img_dir' : base_dir+'/assets/img/normal/english-normal-listening.png' }, 'third_lesson_details' : { 'post_title' : '英語リーディング(中級講座)', 'category_name' : '英語中級講座', 'text_dir' : base_dir+'/assets/texts/normal/english-normal-reading.txt', 'img_dir' : base_dir+'/assets/img/normal/english-normal-reading.png' }, 'fourth_lesson_details' : { 'post_title' : '英語スピーキング(中級講座)', 'category_name' : '英語中級講座', 'text_dir' : base_dir+'/assets/texts/normal/english-normal-speaking.txt', 'img_dir' : base_dir+'/assets/img/normal/english-normal-speaking.png' }, 'fifth_lesson_details' : { 'post_title' : '英語単語(中級講座)', 'category_name' : '英語中級講座', 'text_dir' : base_dir+'/assets/texts/normal/english-normal-words.txt', 'img_dir' : base_dir+'/assets/img/normal/english-normal-words.png' } }, 'advanced_lesson_details' : { 'first_lesson_details' : { 'post_title' : '英語文法(上級講座)', 'category_name' : '英語上級講座', 'text_dir' : base_dir+'/assets/texts/advanced/english-advanced-grammer.txt', 'img_dir' : base_dir+'/assets/img/advanced/english-advanced-grammer.png' }, 'second_lesson_details' : { 'post_title' : '英語リスニング(上級講座)', 'category_name' : '英語上級講座', 'text_dir' : base_dir+'/assets/texts/advanced/english-advanced-listening.txt', 'img_dir' : base_dir+'/assets/img/advanced/english-advanced-listening.png' }, 'third_lesson_details' : { 'post_title' : '英語リーディング(上級講座)', 'category_name' : '英語上級講座', 'text_dir' : base_dir+'/assets/texts/advanced/english-advanced-reading.txt', 'img_dir' : base_dir+'/assets/img/advanced/english-advanced-reading.png' }, 'fourth_lesson_details' : { 'post_title' : '英語スピーキング(上級講座)', 'category_name' : '英語上級講座', 'text_dir' : base_dir+'/assets/texts/advanced/english-advanced-speaking.txt', 'img_dir' : base_dir+'/assets/img/advanced/english-advanced-speaking.png' }, 'fifth_lesson_details' : { 'post_title' : '英語単語(上級講座)', 'category_name' : '英語上級講座', 'text_dir' : base_dir+'/assets/texts/advanced/english-advanced-words.txt', 'img_dir' : base_dir+'/assets/img/advanced/english-advanced-words.png' } } } #for list_loop_name,lesson_details_lists in lesson_overview.items(): for details_item_name, details_item_value in lesson_details.items(): for list_name,lesson_details_lists in details_item_value.items(): self.create_new_lesson_detail_page( lesson_details_lists ) def create_new_lesson_detail_page( self, lesson_details_lists ): #要素を取得するためのXpathのリストを準備 lesson_list_path = self.admin_xpath_lists_xpath['admin_guild_press_lesson_detail_list_page_path'] add_new_lesson_list_path = self.admin_list_parts_xpath['add_new_page'] #Xpathで、各要素を取得 publish_post_btn = self.admin_parts_xpath['publish_post_btn'] add_new_element = self.driver_func.get_element_by_xpath( add_new_lesson_list_path ) #新規追加をクリックして、移動。 self.driver_func.click_item(add_new_element) self.put_contents( lesson_details_lists ) self.upload_img( lesson_details_lists ) self.upload_thumbnail( lesson_details_lists ) #公開ボタンを押す。 self.driver_func.click_publish_btn() self.driver_func.stop(3) #一度他のページへ移動 self.driver_func.move_admin_page( self.admin_xpath_lists_xpath['admin_main_setting_path'], self.admin_xpath_lists_xpath['admin_sub_setting_path'] ) self.driver_func.move_admin_page( self.admin_xpath_lists_xpath['admin_guild_press_lesson_detail_page_path'], self.admin_xpath_lists_xpath['admin_guild_press_lesson_detail_list_page_path'] ) def put_contents( self, lesson_details_lists ): #各要素を取得して、入力していく。 post_title_element = self.driver_func.get_element_by_name( 'post_title' ) self.driver_func.put_item_info( post_title_element, lesson_details_lists['post_title'] ) #コンテンツを詰める content_html = self.driver_func.get_element_by_id('content-html') if( not content_html.is_selected() ) : self.driver_func.click_item( content_html ) content_box_element = self.driver_func.get_element_by_name( 'content' ) content_text = self.basic_func.get_file_text( lesson_details_lists['text_dir'] ) self.driver_func.put_item_info( content_box_element, content_text ) self.check_category_box( lesson_details_lists['category_name'] ) def upload_img( self, lesson_details_lists ): media_input_file = self.admin_parts_xpath['media_input_file'] #メディアを入れるためにボタンをクリックする。 media_btn_html = self.driver_func.get_element_by_id('insert-media-button') self.driver_func.click_item( media_btn_html ) #画像をアップロード img_btn_element = self.driver_func.get_element_by_xpath( media_input_file ) self.driver_func.put_item_info( img_btn_element, lesson_details_lists['img_dir'] ) #アップロードした後しばらく待つ。 self.is_click_media_submit_btn() def is_click_media_submit_btn( self ): media_submit_btn = self.admin_parts_xpath['media_submit_btn'] self.driver_func.stop(0.5) img_submit_element = self.driver_func.get_element_by_xpath( media_submit_btn ) if( img_submit_element.is_enabled() ): self.driver_func.click_item( img_submit_element ) else : self.is_click_media_submit_btn() def upload_thumbnail( self, lesson_details_lists ): media_input_file = self.admin_parts_xpath['media_input_file'] media_add_eye_catch_btn = self.admin_parts_xpath['media_add_eye_catch_btn'] #サムネイルを入れるためにボタンをクリックする。 media_btn_html = self.driver_func.get_element_by_xpath( media_add_eye_catch_btn ) self.driver_func.click_item( media_btn_html ) #画像をアップロード img_btn_element = self.driver_func.get_element_by_xpath( media_input_file ) self.driver_func.put_item_info( img_btn_element, lesson_details_lists['img_dir'] ) #アップロードした後しばらく待つ。 self.is_click_thumbnail_submit_btn() def is_click_thumbnail_submit_btn( self ): media_eye_catch_submit_btn = self.admin_parts_xpath['media_eye_catch_submit_btn'] self.driver_func.stop(0.5) eye_chactch_submit_element = self.driver_func.get_element_by_xpath( media_eye_catch_submit_btn ) if( eye_chactch_submit_element.is_enabled() ): print('is_click_thumbnail_submit_btn') self.driver_func.click_item( eye_chactch_submit_element ) else : print('no is_click_thumbnail_submit_btn') self.is_click_thumbnail_submit_btn() def check_category_box( self, tareget_text ): cat_lists = '//ul[@id="guild_lesson_categorychecklist"]/li' cat_lists_check_box = '//ul[@id="guild_lesson_categorychecklist"]/li/label/input' category_list_element = self.driver_func.get_elements_by_xpath( cat_lists ) category_box_element = self.driver_func.get_elements_by_xpath( cat_lists_check_box ) for element, checkbox in zip( category_list_element, category_box_element ) : text = element.text if( text == tareget_text and not checkbox.is_selected() ): checkbox.click()
class Many_Lesson_Detail_Posts: def __init__(self, driver): self.chrome = driver self.driver_func = Driver_Action( driver ) self.admin_xpath_list_func = Admin_Menu_Path() self.lesson_posts_xpath_list_func = Lesson_Posts_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() def add_lesson_detail_page(self): #ポストのタイトル、テキストのディレクトリ、カテゴリー名、アイキャッチ画像 base_dir = self.basic_func.get_base_dir_path() self.lesson_posts_xpath_list_func.create_many_lesson_posts() lesson_details = self.lesson_posts_xpath_list_func.get_many_lesson_posts_path() #for list_loop_name,lesson_details_lists in lesson_overview.items(): for list_name,lesson_details_lists in lesson_details.items(): self.create_new_lesson_detail_page( lesson_details_lists ) def create_new_lesson_detail_page( self, lesson_details_lists ): #要素を取得するためのXpathのリストを準備 lesson_list_path = self.admin_xpath_lists_xpath['admin_guild_press_lesson_detail_list_page_path'] add_new_lesson_list_path = self.admin_list_parts_xpath['add_new_page'] #Xpathで、各要素を取得 publish_post_btn = self.admin_parts_xpath['publish_post_btn'] add_new_element = self.driver_func.get_element_by_xpath( add_new_lesson_list_path ) #新規追加をクリックして、移動。 self.driver_func.click_item(add_new_element) self.put_contents( lesson_details_lists ) self.upload_img( lesson_details_lists ) self.upload_thumbnail( lesson_details_lists ) #公開ボタンを押す。 self.driver_func.click_publish_btn() self.driver_func.stop(3) #一度他のページへ移動 self.driver_func.move_admin_page( self.admin_xpath_lists_xpath['admin_main_setting_path'], self.admin_xpath_lists_xpath['admin_sub_setting_path'] ) self.driver_func.move_admin_page( self.admin_xpath_lists_xpath['admin_guild_press_lesson_detail_page_path'], self.admin_xpath_lists_xpath['admin_guild_press_lesson_detail_list_page_path'] ) def put_contents( self, lesson_details_lists ): #各要素を取得して、入力していく。 post_title_element = self.driver_func.get_element_by_name( 'post_title' ) self.driver_func.put_item_info( post_title_element, lesson_details_lists['post_title'] ) #コンテンツを詰める content_html = self.driver_func.get_element_by_id('content-html') if( not content_html.is_selected() ) : self.driver_func.click_item( content_html ) content_box_element = self.driver_func.get_element_by_name( 'content' ) content_text = self.basic_func.get_file_text( lesson_details_lists['text_dir'] ) self.driver_func.put_item_info( content_box_element, content_text ) self.check_category_box( lesson_details_lists['category_name'] ) def upload_img( self, lesson_details_lists ): media_input_file = self.admin_parts_xpath['media_input_file'] #メディアを入れるためにボタンをクリックする。 media_btn_html = self.driver_func.get_element_by_id('insert-media-button') self.driver_func.click_item( media_btn_html ) #画像をアップロード img_btn_element = self.driver_func.get_element_by_xpath( media_input_file ) self.driver_func.put_item_info( img_btn_element, lesson_details_lists['img_dir'] ) #アップロードした後しばらく待つ。 self.is_click_media_submit_btn() def is_click_media_submit_btn( self ): media_submit_btn = self.admin_parts_xpath['media_submit_btn'] self.driver_func.stop(0.5) img_submit_element = self.driver_func.get_element_by_xpath( media_submit_btn ) if( img_submit_element.is_enabled() ): self.driver_func.click_item( img_submit_element ) else : self.is_click_media_submit_btn() def upload_thumbnail( self, lesson_details_lists ): media_input_file = self.admin_parts_xpath['media_input_file'] media_add_eye_catch_btn = self.admin_parts_xpath['media_add_eye_catch_btn'] #サムネイルを入れるためにボタンをクリックする。 media_btn_html = self.driver_func.get_element_by_xpath( media_add_eye_catch_btn ) self.driver_func.click_item( media_btn_html ) #画像をアップロード img_btn_element = self.driver_func.get_element_by_xpath( media_input_file ) self.driver_func.put_item_info( img_btn_element, lesson_details_lists['img_dir'] ) #アップロードした後しばらく待つ。 self.is_click_thumbnail_submit_btn() def is_click_thumbnail_submit_btn( self ): media_eye_catch_submit_btn = self.admin_parts_xpath['media_eye_catch_submit_btn'] self.driver_func.stop(0.5) eye_chactch_submit_element = self.driver_func.get_element_by_xpath( media_eye_catch_submit_btn ) if( eye_chactch_submit_element.is_enabled() ): print('is_click_thumbnail_submit_btn') self.driver_func.click_item( eye_chactch_submit_element ) else : print('no is_click_thumbnail_submit_btn') self.is_click_thumbnail_submit_btn() def check_category_box( self, tareget_text ): cat_lists = '//ul[@id="guild_lesson_categorychecklist"]/li' cat_lists_check_box = '//ul[@id="guild_lesson_categorychecklist"]/li/label/input' category_list_element = self.driver_func.get_elements_by_xpath( cat_lists ) category_box_element = self.driver_func.get_elements_by_xpath( cat_lists_check_box ) for element, checkbox in zip( category_list_element, category_box_element ) : text = element.text if( text == tareget_text and not checkbox.is_selected() ): checkbox.click()