class Public_News: 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.my_page_url = self.basic_func.get_my_page_url() def go_to_my_page(self): self.chrome.get(self.my_page_url) self.driver_func.scroll_down(self.chrome) def quit_browser(self): self.chrome.quit()
class Public_Texts_Docs: 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 go_to_texts_list_page(self): self.driver_func.go_to_public_nav_menu('教材一覧ページ') def check_texts_docs_page(self): self.driver_func.scroll_down(self.chrome) text_xpath = '//div[@class="col-xs-12 col-md-12"]/div[@class="dwd_background mb24"][11]/a' text_elem = self.driver_func.get_element_by_xpath(text_xpath) self.driver_func.click_item(text_elem) self.driver_func.stop(3)
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 __init__(self, driver, target_url): self.chrome = driver self.target_url = target_url self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() self.driver_action_func = Driver_Action( driver ) self.create_original_form_func = Create_Original_Form( driver ) # 管理画面のメニューのパスを返す 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()
def __init__(self, driver, target_url): self.chrome = driver self.target_url = target_url self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() self.driver_action_func = Driver_Action(driver) self.user_register_func = User_Register_Setting(driver) # 管理画面のメニューのパスを返す 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( )
def __init__(self, driver, target_url): self.chrome = driver self.target_url = target_url self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() self.driver_action_func = Driver_Action(driver) self.lesson_over_view_posts_func = Lesson_Over_View_Posts(driver) # 管理画面のメニューのパスを返す 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( )
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()
class Public_Edit_User: 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.my_page_url = self.basic_func.get_my_page_url() def go_to_my_page( self ): self.chrome.get( self.my_page_url ) def go_to_edit_page( self ): edit_btn_xpath = self.public_parts_xpath['edit_btn_xpath'] edit_btn_elem = self.driver_func.get_element_by_xpath( edit_btn_xpath ) self.driver_func.click_item( edit_btn_elem ) def edit_user_info( self ): first_name_elem = self.driver_func.get_element_by_name( 'first_name' ) last_name_elem = self.driver_func.get_element_by_name( 'last_name' ) user_email_elem = self.driver_func.get_element_by_name( 'user_email' ) submit_elem = self.driver_func.get_element_by_id( 'submit' ) self.driver_func.clear_item_info( first_name_elem ) self.driver_func.put_item_info( first_name_elem, 'edit_first_name_test' ) self.driver_func.clear_item_info( last_name_elem ) self.driver_func.put_item_info( last_name_elem, 'edit_last_name_test' ) self.driver_func.click_item( submit_elem )
class Google_Calendar_Setting_Controller: def __init__(self, driver, target_url): self.chrome = driver self.target_url = target_url self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() self.driver_action_func = Driver_Action(driver) self.google_calendar_setting_func = Google_Calendar_Setting(driver) # 管理画面のメニューのパスを返す 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( ) def start(self): # GuildPress一般設定登録ページへ移動する self.go_to_guild_press_setting_page() # Googleカレンダー設定登録ページへ移動する self.google_calendar_setting_func.go_to_google_calendar_setting_page() # Googleカレンダーの設定とかを入力する。 self.google_calendar_setting_func.put_google_calendar_setting_info() #GoogleカレンダーAPIを設定する。 self.google_calendar_setting_func.set_google_calendar_api() #トップページへ戻る self.go_to_admin_top_page() def go_to_admin_top_page(self): self.driver_action_func.move_to_page_by_link( self.chrome, self.target_url + 'wp-admin/') def go_to_guild_press_setting_page(self): admin_guild_press_page_path = self.admin_xpath_lists[ 'admin_guild_press_page_path'] admin_guild_press_settings_page_path = self.admin_xpath_lists[ 'admin_guild_press_settings_page_path'] self.driver_action_func.move_admin_page( admin_guild_press_page_path, admin_guild_press_settings_page_path)
def __init__(self, driver, target_url): self.chrome = driver self.target_url = target_url self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() self.driver_action_func = Driver_Action(driver) self.paypal_add_new_func = Pay_Pal_Add_New_One(driver) self.paypal_carete_page_func = Pay_Pal_Create_Page(driver) # 管理画面のメニューのパスを返す 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( )
def __init__(self, driver, target_url): self.chrome = driver self.target_url = target_url self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() self.driver_action_func = Driver_Action(driver) self.admin_calendar_func = Admin_Calendar(driver) self.init_settings_func = Init_Settings(driver) self.calendar_title = '' # 管理画面のメニューのパスを返す 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( )
class Many_Lesson_Detail_Posts_Controller: def __init__(self, driver, target_url): self.chrome = driver self.target_url = target_url self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() self.driver_action_func = Driver_Action(driver) self.many_lesson_detail_posts_func = Many_Lesson_Detail_Posts(driver) # 管理画面のメニューのパスを返す 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( ) def start(self): #GuildPress各レッスン登録一覧新規追加ページへ移動 self.go_to_add_new_lesson_overview_page() # #レッスンの概要を詰める self.many_lesson_detail_posts_func.add_lesson_detail_page() # #トップページへ戻る self.go_to_admin_top_page() def go_to_admin_top_page(self): self.driver_action_func.move_to_page_by_link( self.chrome, self.target_url + 'wp-admin/') def go_to_add_new_lesson_overview_page(self): admin_guild_press_lesson_detail_page_path = self.admin_xpath_lists[ 'admin_guild_press_lesson_detail_page_path'] admin_guild_press_lesson_detail_list_page_path = self.admin_xpath_lists[ 'admin_guild_press_lesson_detail_list_page_path'] self.driver_action_func.move_admin_page( admin_guild_press_lesson_detail_page_path, admin_guild_press_lesson_detail_list_page_path)
class Original_Form_Controller: def __init__(self, driver, target_url): self.chrome = driver self.target_url = target_url self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() self.driver_action_func = Driver_Action( driver ) self.create_original_form_func = Create_Original_Form( driver ) # 管理画面のメニューのパスを返す 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() def start( self ): #GuildPressユーザー登録フォーム項目に移動。 self.go_to_guild_press_original_register_form() #ユーザー登録フォームでオリジナルの項目を登録する、 self.create_original_form_func.add_original_form_inputs() #トップページへ戻る self.go_to_admin_top_page() def go_to_admin_top_page(self): self.driver_action_func.move_to_page_by_link( self.chrome, self.target_url + 'wp-admin/' ) def go_to_guild_press_original_register_form( self ): admin_guild_press_page_path = self.admin_xpath_lists['admin_guild_press_page_path'] admin_guild_press_original_form_page_path = self.admin_xpath_lists['admin_guild_press_original_form_page_path'] self.driver_action_func.move_admin_page( admin_guild_press_page_path, admin_guild_press_original_form_page_path )
def __init__(self, driver): self.chrome = driver self.driver_func = Driver_Action(driver) self.admin_xpath_list_func = Admin_Menu_Path() self.lesson_progress_xpath_list_func = Lesson_Progress_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.lesson_list_page_url = self.basic_func.get_lesson_list_page()
class Public_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 go_to_lesson_list_page(self): self.driver_func.go_to_public_nav_menu('動画一覧ページ') 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'] target_lesson_lists = {'英語初級講座', '英語中級講座', '英語上級講座'} for target_lesson_text in target_lesson_lists: all_lesson_lists_link_elem = self.driver_func.get_elements_by_xpath( all_lesson_list_link) all_lesson_lists_elem = self.driver_func.get_elements_by_xpath( all_lesson_list) #概要ページから該当する名前順にリンクの要素を取得 link_elem = self.basic_func.get_target_link_element( all_lesson_lists_elem, all_lesson_lists_link_elem, target_lesson_text) #リンクを取得 lesson_detail_link = self.driver_func.get_link(link_elem) #リンクに飛ぶ self.driver_func.move_to_page_by_link(self.chrome, lesson_detail_link) self.driver_func.scroll_down(self.chrome) self.driver_func.scroll_top(self.chrome) self.go_to_first_lesson() def go_to_first_lesson(self): first_lesson_link = self.public_parts_xpath['first_lesson_link_xpath'] #概要ページのすべてのレッスンを取得する first_lesson_elem = self.driver_func.get_elements_by_xpath( first_lesson_link) lesson_comp_btn = self.public_parts_xpath['lesson_comp_btn_xpath'] try: lesson_elem = self.driver_func.get_elements_by_xpath( '//div[@id="lesson-list-box"]/div[@class="lesson-list-detail-box lesson-bg-lock"]' ) except Exception as e: lesson_count = len(first_lesson_elem) else: lesson_count = len(first_lesson_elem) + len(lesson_elem) #最初のレッスンをクリックする。 self.driver_func.click_item(first_lesson_elem[0]) self.driver_func.stop(1) for x in range(lesson_count): try: lesson_comp_btn_elem = self.driver_func.get_element_by_xpath( lesson_comp_btn) self.driver_func.click_item(lesson_comp_btn_elem) except Exception as e: self.progress_quiz() else: self.progress_btn() self.go_to_lesson_list_page() #通常のボタンクリックで、次のページへ進むタイプ def progress_btn(self): lesson_next_btn = self.public_parts_xpath['lesson_next_btn_xpath'] #次のページへ進むが最後のページにはないので、それをチェックする。 try: lesson_next_btn_elem = self.driver_func.get_element_by_xpath( lesson_next_btn) self.driver_func.click_item(lesson_next_btn_elem) self.driver_func.stop(1) except NoSuchElementException: pass #クイズに答える形式で、次のページへ進むタイプ def progress_quiz(self): lesson_quiz_lists_xpath = self.public_parts_xpath[ 'lesson_quiz_lists_xpath'] send_answer_xpath = self.public_parts_xpath['send_answer_xpath'] next_btn_xpath = self.public_parts_xpath['next_btn_xpath'] lesson_quiz_lists_elem = self.driver_func.get_elements_by_xpath( lesson_quiz_lists_xpath) send_answer_elem = self.driver_func.get_element_by_xpath( send_answer_xpath) for x in range(0, len(lesson_quiz_lists_elem)): self.driver_func.click_item(lesson_quiz_lists_elem[x]) self.driver_func.click_item(send_answer_elem) self.driver_func.stop(1) #正解して、次へ進むボタンが表示されるまでループを繰り返す。 try: next_btn_elem = self.driver_func.get_element_by_xpath( next_btn_xpath) self.driver_func.click_item(next_btn_elem) except Exception as e: pass else: break """
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 Many_Lesson_Progress: def __init__(self, driver): self.chrome = driver self.driver_func = Driver_Action(driver) self.admin_xpath_list_func = Admin_Menu_Path() self.lesson_progress_xpath_list_func = Lesson_Progress_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.lesson_list_page_url = self.basic_func.get_lesson_list_page() def go_to_lesson_list_page(self): print('go_to_lesson_list_page') self.driver_func.move_to_page_by_link(self.chrome, self.lesson_list_page_url) def progress_each_lesson(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'] first_lesson_link = self.public_parts_xpath['first_lesson_link_xpath'] lesson_comp_btn = self.public_parts_xpath['lesson_comp_btn_xpath'] lesson_next_btn = self.public_parts_xpath['lesson_next_btn_xpath'] self.lesson_progress_xpath_list_func.create_many_lesson_posts() target_lesson_lists = self.lesson_progress_xpath_list_func.get_many_target_lesson_lists_path( ) for target_lesson_text in target_lesson_lists: self.driver_func.stop(1) 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, target_lesson_text) #リンクを取得 lesson_detail_link = self.driver_func.get_link(link_elem) #リンクに飛ぶ self.driver_func.move_to_page_by_link(self.chrome, lesson_detail_link) #概要ページのすべてのレッスンを取得する first_lesson_elem = self.driver_func.get_elements_by_xpath( first_lesson_link) #最初のレッスンをクリックする。 self.driver_func.click_item(first_lesson_elem[0]) self.driver_func.stop(1) #レッスンの総数分だけ、レッスン完了をクリックして、レッスンを完了していく。 for i in range(len(first_lesson_elem)): lesson_comp_btn_elem = self.driver_func.get_element_by_xpath( lesson_comp_btn) self.driver_func.click_item(lesson_comp_btn_elem) #次のページへ進むが最後のページにはないので、それをチェックする。 try: lesson_next_btn_elem = self.driver_func.get_element_by_xpath( lesson_next_btn) self.driver_func.click_item(lesson_next_btn_elem) except NoSuchElementException: print('none') self.driver_func.move_to_page_by_link(self.chrome, self.lesson_list_page_url)
class Init_Set_Controller: def __init__(self, driver, target_url): self.chrome = driver self.target_url = target_url self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() self.driver_action_func = Driver_Action(driver) self.init_settings_func = Init_Settings(driver) self.user_register_setting_func = User_Register_Setting(driver) # 管理画面のメニューのパスを返す 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( ) def get_page_list(self): page_lists = { '新規登録ページ': '[guild_press_user_register]', 'マイぺージ': '[guild_press_my_page]', 'ログインページ': '[guild_press_login_page]', 'ユーザー情報編集ページ': '[guild_press_edit_user_info]', '動画一覧ページ': '[guild_press_all_lesson]', '教材一覧ページ': '[guild_press_list_texts_docs]', } return page_lists def start(self): admin_main_setting_path = self.admin_xpath_lists[ 'admin_main_setting_path'] admin_sub_setting_path = self.admin_xpath_lists[ 'admin_sub_setting_path'] page_lists = self.get_page_list() for page_title, page_shortcode in page_lists.items(): #固定ページリストへ移動 self.go_to_page_list() #ページの作成 self.driver_action_func.go_to_add_new_page() self.init_settings_func.create_new_guild_press_shortcode_page( page_title, page_shortcode) #公開ボタンをクリック self.driver_action_func.click_publish_btn() self.driver_action_func.stop(3) #一度トップページへ移動 self.go_to_admin_top_page() #設定の保存 self.init_settings_func.move_to_guild_press_setting_page() self.init_settings_func.set_up_guild_press_settings() #一般設定に移動 self.driver_action_func.move_admin_page(admin_main_setting_path, admin_sub_setting_path) #一般設定がちゃんとされているかチェックする。 self.user_register_setting_func.check_membership_setting() #トップページへ移動 self.go_to_admin_top_page() def go_to_admin_top_page(self): self.driver_action_func.move_to_page_by_link( self.chrome, self.target_url + 'wp-admin/') def go_to_page_list(self): admin_page_path = self.admin_xpath_lists['admin_page_path'] admin_list_page_path = self.admin_xpath_lists['admin_list_page_path'] self.driver_action_func.move_admin_page(admin_page_path, admin_list_page_path)
class Admin_Calendar_Controller: def __init__(self, driver, target_url): self.chrome = driver self.target_url = target_url self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() self.driver_action_func = Driver_Action(driver) self.admin_calendar_func = Admin_Calendar(driver) self.init_settings_func = Init_Settings(driver) self.calendar_title = '' # 管理画面のメニューのパスを返す 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( ) def start(self): #固定ページ一覧へ移動 self.go_to_page_list() #カレンダーの固定ページが作成されているチェックする。 is_page_created = self.admin_calendar_func.create_public_calendar_page( ) if not is_page_created: #カレンダーページ作成 self.driver_action_func.go_to_add_new_page() self.init_settings_func.create_new_guild_press_shortcode_page( 'カレンダーページ', '[guild_press_calender]') self.driver_action_func.click_publish_btn() # カレンダー一覧ページへ移動する。 self.go_to_calendar_page() # カレンダー登録ページへ移動する self.admin_calendar_func.go_to_register_calendar_page() #カレンダー登録ページへカレンダー情報を入力. self.calendar_title = self.admin_calendar_func.put_calendar_info() #カレンダー編集ページへ移動する self.admin_calendar_func.edit_calendar_info_page(self.calendar_title) # カレンダーメール編集ページへ移動する。 self.admin_calendar_func.go_to_calendar_email_page() # カレンダーメールの内容を入力する。 self.admin_calendar_func.put_calendar_email_info() #トップページへ戻る self.go_to_admin_top_page() def get_calendar_title(self): return self.calendar_title def go_to_page_list(self): admin_page_path = self.admin_xpath_lists['admin_page_path'] admin_list_page_path = self.admin_xpath_lists['admin_list_page_path'] self.driver_action_func.move_admin_page(admin_page_path, admin_list_page_path) def go_to_calendar_page(self): lesson_detail_page_path = self.admin_xpath_lists[ 'admin_guild_press_lesson_detail_page_path'] calendar_page_path = self.admin_xpath_lists[ 'admin_guild_press_lesson_calendar_page_path'] self.driver_action_func.move_admin_page(lesson_detail_page_path, calendar_page_path) def go_to_admin_top_page(self): self.driver_action_func.move_to_page_by_link( self.chrome, self.target_url + 'wp-admin/')
class Member_Rank_OverView_Controller: def __init__(self, driver, target_url): self.chrome = driver self.target_url = target_url self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() self.driver_action_func = Driver_Action(driver) self.admin_member_rank_func = Admin_Member_Rank(driver) self.user_register_func = User_Register_Setting(driver) self.paypal_add_new_func = Pay_Pal_Add_New_One(driver) self.paypal_carete_page_func = Pay_Pal_Create_Page(driver) # 管理画面のメニューのパスを返す 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( ) def start(self): #固定ページ一覧に移動 self.go_to_member_rank_page() #会員ランクを設定していく self.admin_member_rank_func.add_admin_rank() ##レッスン概要ページにブロックを設定する。 #GuildPressレッスン一覧新規追加ページへ移動 self.go_to_lesson_over_view_page() #会員ランクのブロックを追加していく。 self.admin_member_rank_func.add_block_setting_overview_page() ##別のタブを立ち上げて、普通にユーザー登録をして、表示を確認する。 self.check_block_page_by_normal_regsiter() ##今度はゴールド会員として登録して表示をチェックするためにゴールド会員のページを作成 self.check_block_page_by_paypal_regsiter() #トップページへ戻る self.go_to_admin_top_page() ##一連のチェックを終えたら、ページのブロックを解除する。 self.reset_block_page() #トップページへ戻る self.go_to_admin_top_page() def check_block_page_by_paypal_regsiter(self): ##今度はゴールド会員として登録して表示をチェックするためにゴールド会員のページを作成 self.go_to_paypal_setting_page() #新しくPayPalの設定を作成 self.paypal_add_new_func.go_to_pay_pal_register_page() self.paypal_add_new_func.add_member_subscription_payment() payapl_short_code = self.paypal_carete_page_func.get_new_pay_pal_short_code( ) #固定ページ一覧に移動 self.go_page_list() self.driver_action_func.go_to_add_new_page() self.paypal_carete_page_func.create_member_subscription_page( payapl_short_code) #公開ボタンをクリックする。 self.driver_action_func.click_publish_btn() paypal_page_link = self.driver_action_func.edit_page_link() new_paypal_register_driver = webdriver.Chrome( ChromeDriverManager().install()) new_paypal_register_driver.get(paypal_page_link) ##今度はゴールド会員として登録して表示をチェックする。 # 新しいブラウザでインスタンス作成 paypal_register_func = Test_User_Normal_Register( new_paypal_register_driver) paypal_register_func.nomarl_put_user_info_to_form() payment_register_func = Test_User_Payment_Register( new_paypal_register_driver) payment_register_func.click_register_page_pay_pal_btn() #payment_register_func.click_new_register_page_pay_pal_btn() #新しく new_paypal_lesson_progress_func = Lesson_Progress( new_paypal_register_driver) new_paypal_lesson_progress_func.go_to_lesson_list_page() #ドライバーを新しくして、またインスタンス作成 public_member_rank_func = Public_Member_Rank( new_paypal_register_driver) result = public_member_rank_func.check_is_user_get_ranked() if (result == False): another_driver_action_func = Driver_Action( new_paypal_register_driver) xpath = "//ul[@id='wp-admin-bar-top-secondary']/li[@id='wp-admin-bar-my-account']/div[@class='ab-sub-wrapper']/ul[@id='wp-admin-bar-user-actions']/li[@id='wp-admin-bar-user-info']/a[@class='ab-item']/span[@class='display-name']" target_user_name = another_driver_action_func.get_element_by_xpath( xpath).get_attribute("innerHTML") #admin側を動かすために、あどみん側のドライバーを渡す。 paypal_admin_member_rank_func = Public_Member_Rank(self.chrome) paypal_admin_member_rank_func.set_user_status_to_gold( target_user_name) paypal_admin_member_rank_func.go_to_admin_top_page(self.target_url) public_member_rank_func.go_to_lesson_list_page() public_member_rank_func.check_lesson_overview_block_page() self.driver_action_func.stop(2) self.driver_action_func.quit(new_paypal_register_driver) def reset_block_page(self): self.go_page_list() self.go_to_lesson_over_view_page() self.admin_member_rank_func.reset_block_setting_overview_page() def check_block_page_by_normal_regsiter(self): #固定ページ一覧に移動 self.go_page_list() #固定ページの中から、新規登録ページに移動する。 self.go_to_new_register_page() new_link = self.user_register_func.get_new_register_page_link() # 普通にbasicに新しく開く処理をするとなぜか、新しくひらいたクロームが落ちてしまうのでここで普通に新しく作成。 new_normal_register_driver = webdriver.Chrome( ChromeDriverManager().install()) new_normal_register_driver.get(new_link) # 新しいブラウザでインスタンス作成 normal_register_func = Test_User_Normal_Register( new_normal_register_driver) # ユーザー情報を入れて、新しくユーザーを登録 normal_register_func.nomarl_put_user_info_to_form() lesson_progress_func = Lesson_Progress(new_normal_register_driver) #動画一覧ページに移動して、そのリンクの要素を取得 lesson_progress_func.go_to_lesson_list_page() #ドライバーを新しくして、またインスタンス作成 public_member_rank_func = Public_Member_Rank( new_normal_register_driver) public_member_rank_func.check_lesson_overview_block_page() self.driver_action_func.stop(2) self.driver_action_func.quit(new_normal_register_driver) def go_to_paypal_setting_page(self): admin_guild_press_page_path = self.admin_xpath_lists[ 'admin_guild_press_page_path'] admin_guild_press_paypal_page_path = self.admin_xpath_lists[ 'admin_guild_press_paypal_page_path'] self.driver_action_func.move_admin_page( admin_guild_press_page_path, admin_guild_press_paypal_page_path) def go_to_new_register_page(self): admin_new_regsiter_page_path = self.admin_xpath_lists[ 'admin_new_regsiter_page_path'] self.driver_action_func.single_move_admin_page( admin_new_regsiter_page_path) def go_page_list(self): admin_page_path = self.admin_xpath_lists['admin_page_path'] admin_list_page_path = self.admin_xpath_lists['admin_list_page_path'] self.driver_action_func.move_admin_page(admin_page_path, admin_list_page_path) def go_to_lesson_over_view_page(self): lesson_over_view_page_path = self.admin_xpath_lists[ 'admin_guild_press_lesson_over_view_page_path'] lesson_over_view_list_page_path = self.admin_xpath_lists[ 'admin_guild_press_lesson_over_view_list_page_path'] self.driver_action_func.move_admin_page( lesson_over_view_page_path, lesson_over_view_list_page_path) def go_to_member_rank_page(self): admin_guild_press_page_path = self.admin_xpath_lists[ 'admin_guild_press_page_path'] admin_guild_press_member_rank_page_path = self.admin_xpath_lists[ 'admin_guild_press_member_rank_page_path'] self.driver_action_func.move_admin_page( admin_guild_press_page_path, admin_guild_press_member_rank_page_path) def go_to_admin_top_page(self): self.driver_action_func.move_to_page_by_link( self.chrome, self.target_url + 'wp-admin/')
class PayPal_User_Register_Controller: def __init__(self, driver, target_url): self.chrome = driver self.target_url = target_url self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() self.driver_action_func = Driver_Action(driver) self.paypal_add_new_func = Pay_Pal_Add_New_One(driver) self.paypal_carete_page_func = Pay_Pal_Create_Page(driver) # 管理画面のメニューのパスを返す 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( ) def start(self): #PayPal設定ページに移動 self.go_to_paypal_setting_page() #PayPalボタン作成画面に移動 self.paypal_add_new_func.go_to_pay_pal_register_page() #継続課金のボタン作成 self.paypal_add_new_func.add_normal_subscription_payment() payapl_short_code = self.paypal_carete_page_func.get_new_pay_pal_short_code( ) #固定ページ一覧に移動 self.go_to_page_list() #新規追加ページへ移動 self.driver_action_func.go_to_add_new_page() #ペイパルのページを作成 self.paypal_carete_page_func.create_normal_subscription_page( payapl_short_code) #公開ボタンをクリックする。 self.driver_action_func.click_publish_btn() #ペイパルのテスト self.test_pay_pal_regsiter() #トップページへ移動 self.go_to_admin_top_page() def test_pay_pal_regsiter(self): paypal_page_link = self.driver_action_func.edit_page_link() new_paypal_register_driver = webdriver.Chrome( ChromeDriverManager().install()) new_paypal_register_driver.get(paypal_page_link) # 新しいブラウザでインスタンス作成 paypal_register_func = Test_User_Normal_Register( new_paypal_register_driver) paypal_register_func.nomarl_put_user_info_to_form() payment_register_func = Test_User_Payment_Register( new_paypal_register_driver) payment_register_func.click_register_page_pay_pal_btn() #payment_register_func.click_new_register_page_pay_pal_btn() self.driver_action_func.quit(new_paypal_register_driver) def go_to_paypal_setting_page(self): admin_guild_press_page_path = self.admin_xpath_lists[ 'admin_guild_press_page_path'] admin_guild_press_paypal_page_path = self.admin_xpath_lists[ 'admin_guild_press_paypal_page_path'] self.driver_action_func.move_admin_page( admin_guild_press_page_path, admin_guild_press_paypal_page_path) def go_to_admin_top_page(self): self.driver_action_func.move_to_page_by_link( self.chrome, self.target_url + 'wp-admin/') def go_to_page_list(self): admin_page_path = self.admin_xpath_lists['admin_page_path'] admin_list_page_path = self.admin_xpath_lists['admin_list_page_path'] self.driver_action_func.move_admin_page(admin_page_path, admin_list_page_path)
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 Text_Docs_Controller: def __init__(self, driver, target_url): self.chrome = driver self.target_url = target_url self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() self.driver_action_func = Driver_Action(driver) self.admin_texts_docs_func = Admin_Texts_Docs(driver) self.user_register_func = User_Register_Setting(driver) self.paypal_add_new_func = Pay_Pal_Add_New_One(driver) self.paypal_carete_page_func = Pay_Pal_Create_Page(driver) # 管理画面のメニューのパスを返す 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( ) def start(self): ##レッスン詳細ページにブロックを設定する。 #GuildPressレッスン一覧新規追加ページへ移動 self.go_to_texts_docs_page() # 教材などを新しく追加する。 self.admin_texts_docs_func.add_texts_docs_info() #レッスン一覧へ移動 self.go_to_lesson_detail_page() #教材一覧へ移動 self.go_to_texts_docs_page() #ショートコード取得 texts_docs_shortcodes = self.admin_texts_docs_func.get_dwd_show_shortcode( ) #レッスン一覧へ移動 self.go_to_lesson_detail_page() #ショートコードセット self.admin_texts_docs_func.put_short_codes_to_lesson_detail( texts_docs_shortcodes) self.driver_action_func.stop(10) self.driver_action_func.move_to_page_by_link( self.chrome, self.target_url + 'wp-admin/') #固定ページ一覧に移動 self.go_to_page_list() #固定ページの中から、新規登録ページに移動する。 self.go_to_new_register_page() self.check_texts_docs_by_normal_user() #とっぷぺーじへ移動 self.go_to_admin_top_page() def check_texts_docs_by_normal_user(self): new_link = self.user_register_func.get_new_register_page_link() # 普通にbasicに新しく開く処理をするとなぜか、新しくひらいたクロームが落ちてしまうのでここで普通に新しく作成。 new_normal_register_driver = webdriver.Chrome( ChromeDriverManager().install()) new_normal_register_driver.get(new_link) # 新しいブラウザでインスタンス作成 normal_register_func = Test_User_Normal_Register( new_normal_register_driver) # ユーザー情報を入れて、新しくユーザーを登録 normal_register_func.nomarl_put_user_info_to_form() public_texts_docs_func = Public_Texts_Docs(new_normal_register_driver) public_texts_docs_func.go_to_texts_list_page() public_texts_docs_func.check_texts_docs_page() self.driver_action_func.quit(new_normal_register_driver) def go_to_new_register_page(self): admin_new_regsiter_page_path = self.admin_xpath_lists[ 'admin_new_regsiter_page_path'] self.driver_action_func.single_move_admin_page( admin_new_regsiter_page_path) def go_to_page_list(self): admin_page_path = self.admin_xpath_lists['admin_page_path'] admin_list_page_path = self.admin_xpath_lists['admin_list_page_path'] self.driver_action_func.move_admin_page(admin_page_path, admin_list_page_path) def go_to_lesson_detail_page(self): admin_guild_press_lesson_detail_page_path = self.admin_xpath_lists[ 'admin_guild_press_lesson_detail_page_path'] admin_guild_press_lesson_detail_list_page_path = self.admin_xpath_lists[ 'admin_guild_press_lesson_detail_list_page_path'] self.driver_action_func.move_admin_page( admin_guild_press_lesson_detail_page_path, admin_guild_press_lesson_detail_list_page_path) def go_to_texts_docs_page(self): admin_guild_press_page_path = self.admin_xpath_lists[ 'admin_guild_press_page_path'] admin_guild_press_texts_docs_page_path = self.admin_xpath_lists[ 'admin_guild_press_texts_docs_page_path'] self.driver_action_func.move_admin_page( admin_guild_press_page_path, admin_guild_press_texts_docs_page_path) def go_to_admin_top_page(self): self.driver_action_func.move_to_page_by_link( self.chrome, self.target_url + 'wp-admin/')
from controllers.MemberRankDetailPostsController import Member_Rank_Detail_Posts_Controller from controllers.TextDocsController import Text_Docs_Controller from controllers.AdminRockController import Admin_Rock_Controller from controllers.AddQuizController import Add_Quiz_Controller from controllers.NewsController import News_Controller from controllers.EditUserController import Edit_User_Controller from controllers.many.lesson.ManyLessonOverViewController import Many_Lesson_Over_View_Controller from controllers.many.lesson.ManyLessonDetailPostsController import Many_Lesson_Detail_Posts_Controller from controllers.many.lesson_progress.ManyLessonProgressController import Many_Lesson_Progress_Controller #xpathで使うものを設定。 admin_xpath = Admin_Menu_Path() admin_xpath_list = admin_xpath.get_admin_menu_xpath() admin_parts_xpath_list = admin_xpath.get_admin_parts() admin_menu_list_parts_xpath = admin_xpath.get_admin_menu_list_parts_xpath() # 使うドライバーを定義する chrome = webdriver.Chrome(ChromeDriverManager().install()) #テストする先のURLを設定する target_url = 'http://localhost:8888/wordpress/wp-selenium/' # インスタンス作成 driver_action_func = Driver_Action( chrome )
class Edit_User_Controller: def __init__(self, driver, target_url): self.chrome = driver self.target_url = target_url self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() self.driver_action_func = Driver_Action(driver) self.user_register_func = User_Register_Setting(driver) self.paypal_add_new_func = Pay_Pal_Add_New_One(driver) self.paypal_carete_page_func = Pay_Pal_Create_Page(driver) # 管理画面のメニューのパスを返す 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( ) def start(self): #固定ページ一覧に移動 self.go_page_list() #固定ページの中から、新規登録ページに移動する。 self.go_to_new_register_page() #普通に登録して、ユーザー情報を編集できるかチェックする。 self.check_edit_user_info() #トップページへ戻る self.go_to_admin_top_page() def check_edit_user_info(self): new_link = self.user_register_func.get_new_register_page_link() # 普通にbasicに新しく開く処理をするとなぜか、新しくひらいたクロームが落ちてしまうのでここで普通に新しく作成。 new_normal_register_driver = webdriver.Chrome( ChromeDriverManager().install()) new_normal_register_driver.get(new_link) # 新しいブラウザでインスタンス作成 normal_register_func = Test_User_Normal_Register( new_normal_register_driver) # ユーザー情報を入れて、新しくユーザーを登録 normal_register_func.nomarl_put_user_info_to_form() public_edit_user_func = Public_Edit_User(new_normal_register_driver) public_edit_user_func.go_to_my_page() public_edit_user_func.go_to_edit_page() public_edit_user_func.edit_user_info() self.driver_action_func.stop(5) self.driver_action_func.quit(new_normal_register_driver) def go_to_lesson_detail_page(self): admin_guild_press_lesson_detail_page_path = self.admin_xpath_lists[ 'admin_guild_press_lesson_detail_page_path'] admin_guild_press_lesson_detail_list_page_path = self.admin_xpath_lists[ 'admin_guild_press_lesson_detail_list_page_path'] self.driver_action_func.move_admin_page( admin_guild_press_lesson_detail_page_path, admin_guild_press_lesson_detail_list_page_path) def go_to_my_page(self): admin_go_to_mypage_path = self.admin_xpath_lists[ 'admin_go_to_mypage_path'] self.driver_action_func.single_move_admin_page(admin_go_to_mypage_path) def go_to_paypal_setting_page(self): admin_guild_press_page_path = self.admin_xpath_lists[ 'admin_guild_press_page_path'] admin_guild_press_paypal_page_path = self.admin_xpath_lists[ 'admin_guild_press_paypal_page_path'] self.driver_action_func.move_admin_page( admin_guild_press_page_path, admin_guild_press_paypal_page_path) def go_to_new_register_page(self): admin_new_regsiter_page_path = self.admin_xpath_lists[ 'admin_new_regsiter_page_path'] self.driver_action_func.single_move_admin_page( admin_new_regsiter_page_path) def go_page_list(self): admin_page_path = self.admin_xpath_lists['admin_page_path'] admin_list_page_path = self.admin_xpath_lists['admin_list_page_path'] self.driver_action_func.move_admin_page(admin_page_path, admin_list_page_path) def go_to_lesson_over_view_page(self): lesson_over_view_page_path = self.admin_xpath_lists[ 'admin_guild_press_lesson_over_view_page_path'] lesson_over_view_list_page_path = self.admin_xpath_lists[ 'admin_guild_press_lesson_over_view_list_page_path'] self.driver_action_func.move_admin_page( lesson_over_view_page_path, lesson_over_view_list_page_path) def go_to_member_rank_page(self): admin_guild_press_page_path = self.admin_xpath_lists[ 'admin_guild_press_page_path'] admin_guild_press_member_rank_page_path = self.admin_xpath_lists[ 'admin_guild_press_member_rank_page_path'] self.driver_action_func.move_admin_page( admin_guild_press_page_path, admin_guild_press_member_rank_page_path) def go_to_admin_top_page(self): self.driver_action_func.move_to_page_by_link( self.chrome, self.target_url + 'wp-admin/')
class News_Controller: def __init__(self, driver, target_url): self.chrome = driver self.target_url = target_url self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() self.driver_action_func = Driver_Action( driver ) self.admin_news_func = Admin_News( driver ) self.user_register_func = User_Register_Setting( driver ) self.paypal_add_new_func = Pay_Pal_Add_New_One( driver ) self.paypal_carete_page_func = Pay_Pal_Create_Page( driver ) # 管理画面のメニューのパスを返す 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() def start( self ): #固定ページ一覧に移動 self.go_page_list() #固定ページの中から、新規登録ページに移動する。 self.go_to_my_page() #ニュース一覧のショートコードをセットする self.admin_news_func.add_news_code() #レッスン詳細一覧へ移動 self.go_to_lesson_detail_page() #固定ページ一覧に移動 self.go_page_list() #固定ページの中から、新規登録ページに移動する。 self.go_to_new_register_page() #ニュースを普通の登録状態で確認 self.check_news_page_by_normal_regsiter() #トップページへ移動 self.go_to_admin_top_page() #ニュースを3つの状態にしてチェックする。 self.check_three_news_page() #トップページへ移動 self.go_to_admin_top_page() #タイトルを編集した状態のページをチェック self.check_news_page_edited_title() #トップページへ移動 self.go_to_admin_top_page() def check_news_page_edited_title( self ): #固定ページ一覧に移動 self.go_page_list() #固定ページの中から、新規登録ページに移動する。 self.go_to_my_page() #タイトルを編集した状態のショートコードページを追加 self.admin_news_func.add_test_title_news_code() #レッスン詳細一覧へ移動 self.go_to_lesson_detail_page() #固定ページ一覧に移動 self.go_page_list() #固定ページの中から、新規登録ページに移動する。 self.go_to_new_register_page() self.check_news_page_by_normal_regsiter() def check_three_news_page( self ): #固定ページ一覧に移動 self.go_page_list() #固定ページの中から、マイページに移動する。 self.go_to_my_page() #3つのニュースを表示するようにショートコードを書き換える。 self.admin_news_func.add_three_news_code() #レッスン詳細一覧へ移動 self.go_to_lesson_detail_page() #固定ページ一覧に移動 self.go_page_list() #固定ページの中から、新規登録ページに移動する。 self.go_to_new_register_page() self.check_news_page_by_normal_regsiter() def check_news_page_by_normal_regsiter(self): new_link = self.user_register_func.get_new_register_page_link() # 普通にbasicに新しく開く処理をするとなぜか、新しくひらいたクロームが落ちてしまうのでここで普通に新しく作成。 new_normal_register_driver = webdriver.Chrome(ChromeDriverManager().install()) new_normal_register_driver.get( new_link ) # 新しいブラウザでインスタンス作成 normal_register_func = Test_User_Normal_Register( new_normal_register_driver ) # ユーザー情報を入れて、新しくユーザーを登録 normal_register_func.nomarl_put_user_info_to_form() public_news_func = Public_News( new_normal_register_driver ) #マイページへ移動して表示を確認 public_news_func.go_to_my_page() self.driver_action_func.quit( new_normal_register_driver ) def go_to_paypal_setting_page(self): admin_guild_press_page_path = self.admin_xpath_lists['admin_guild_press_page_path'] admin_guild_press_paypal_page_path = self.admin_xpath_lists['admin_guild_press_paypal_page_path'] self.driver_action_func.move_admin_page( admin_guild_press_page_path, admin_guild_press_paypal_page_path ) def go_to_new_register_page( self ): admin_new_regsiter_page_path = self.admin_xpath_lists['admin_new_regsiter_page_path'] self.driver_action_func.single_move_admin_page( admin_new_regsiter_page_path ) def go_page_list( self ): admin_page_path = self.admin_xpath_lists['admin_page_path'] admin_list_page_path = self.admin_xpath_lists['admin_list_page_path'] self.driver_action_func.move_admin_page( admin_page_path, admin_list_page_path ) def go_to_lesson_over_view_page( self ): lesson_over_view_page_path = self.admin_xpath_lists['admin_guild_press_lesson_over_view_page_path'] lesson_over_view_list_page_path = self.admin_xpath_lists['admin_guild_press_lesson_over_view_list_page_path'] self.driver_action_func.move_admin_page( lesson_over_view_page_path, lesson_over_view_list_page_path ) def go_to_member_rank_page( self ): admin_guild_press_page_path = self.admin_xpath_lists['admin_guild_press_page_path'] admin_guild_press_member_rank_page_path = self.admin_xpath_lists['admin_guild_press_member_rank_page_path'] self.driver_action_func.move_admin_page( admin_guild_press_page_path, admin_guild_press_member_rank_page_path ) def go_to_admin_top_page(self): self.driver_action_func.move_to_page_by_link( self.chrome, self.target_url + 'wp-admin/' ) def go_to_lesson_detail_page( self ): admin_guild_press_lesson_detail_page_path = self.admin_xpath_lists['admin_guild_press_lesson_detail_page_path'] admin_guild_press_lesson_detail_list_page_path = self.admin_xpath_lists['admin_guild_press_lesson_detail_list_page_path'] self.driver_action_func.move_admin_page( admin_guild_press_lesson_detail_page_path, admin_guild_press_lesson_detail_list_page_path ) def go_to_my_page( self ): admin_go_to_mypage_path = self.admin_xpath_lists['admin_go_to_mypage_path'] self.driver_action_func.single_move_admin_page( admin_go_to_mypage_path )
class Lesson_Progress_Controller: def __init__(self, driver, target_url): self.chrome = driver self.target_url = target_url self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() self.driver_action_func = Driver_Action(driver) self.user_register_func = User_Register_Setting(driver) # 管理画面のメニューのパスを返す 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( ) def start(self): #固定ページ一覧に移動 self.go_to_page_list() #固定ページの中から、新規登録ページに移動する。 self.go_to_new_register_page() new_link = self.user_register_func.get_new_register_page_link() # 普通にbasicに新しく開く処理をするとなぜか、新しくひらいたクロームが落ちてしまうのでここで普通に新しく作成。 new_normal_register_driver = webdriver.Chrome( ChromeDriverManager().install()) new_normal_register_driver.get(new_link) # 新しいブラウザでインスタンス作成 normal_register_func = Test_User_Normal_Register( new_normal_register_driver) # ユーザー情報を入れて、新しくユーザーを登録 normal_register_func.nomarl_put_user_info_to_form() lesson_progress_func = Lesson_Progress(new_normal_register_driver) #動画一覧ページに移動して、そのリンクの要素を取得 lesson_progress_func.go_to_lesson_list_page() #各動画の完了ボタンをクリックして、進捗を進めていく lesson_progress_func.progress_each_lesson() #トップページへ移動 self.go_to_admin_top_page() def go_to_new_register_page(self): admin_new_regsiter_page_path = self.admin_xpath_lists[ 'admin_new_regsiter_page_path'] self.driver_action_func.single_move_admin_page( admin_new_regsiter_page_path) def go_to_page_list(self): admin_page_path = self.admin_xpath_lists['admin_page_path'] admin_list_page_path = self.admin_xpath_lists['admin_list_page_path'] self.driver_action_func.move_admin_page(admin_page_path, admin_list_page_path) def go_to_admin_top_page(self): self.driver_action_func.move_to_page_by_link( self.chrome, self.target_url + 'wp-admin/')
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_Controller: def __init__(self, driver, target_url, calendar_title): self.chrome = driver self.target_url = target_url self.admin_xpath_list_func = Admin_Menu_Path() self.basic_func = Basic() self.driver_action_func = Driver_Action(driver) self.user_register_func = User_Register_Setting(driver) self.calendar_title = calendar_title # 管理画面のメニューのパスを返す 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( ) def start_many(self): #固定ページ一覧へ移動 self.go_to_page_list() #固定ページの中から、新規登録ページに移動する。 self.go_to_new_register_page() #新規登録のURLを取得 new_link = self.user_register_func.get_new_register_page_link() #新しくドライバーを作成 new_normal_register_driver = webdriver.Chrome( ChromeDriverManager().install()) #トップページへ移動 new_normal_register_driver.get(new_link) # 新しいブラウザでインスタンス作成 normal_register_func = Test_User_Normal_Register( new_normal_register_driver) # ユーザー情報を入れて、新しくユーザーを登録 normal_register_func.nomarl_put_user_info_to_form() #インスタンス作成 public_calendar_func = Public_Calendar(new_normal_register_driver) #カレンダーページへ移動 public_calendar_func.go_to_calendar_page() for calendar_register_list_name in self.calendar_title: print(calendar_register_list_name) #カレンダーページの要素をクリックする。 public_calendar_func.click_calendar(calendar_register_list_name) #カレンダーページ登録ページへ移動 public_calendar_func.go_to_calendar_register_page() #カレンダー情報入力 public_calendar_func.put_calendar_register_info() #カレンダー情報編集 public_calendar_func.click_calendar(calendar_register_list_name) public_calendar_func.go_to_calendar_edit_page() public_calendar_func.put_calendar_edit_info() #カレンダーページへ移動 public_calendar_func.go_to_calendar_page() self.driver_action_func.quit(new_normal_register_driver) self.go_to_admin_top_page() def start(self): #固定ページ一覧へ移動 self.go_to_page_list() #固定ページの中から、新規登録ページに移動する。 self.go_to_new_register_page() #新規登録のURLを取得 new_link = self.user_register_func.get_new_register_page_link() #新しくドライバーを作成 new_normal_register_driver = webdriver.Chrome( ChromeDriverManager().install()) #トップページへ移動 new_normal_register_driver.get(new_link) # 新しいブラウザでインスタンス作成 normal_register_func = Test_User_Normal_Register( new_normal_register_driver) # ユーザー情報を入れて、新しくユーザーを登録 normal_register_func.nomarl_put_user_info_to_form() #インスタンス作成 public_calendar_func = Public_Calendar(new_normal_register_driver) #カレンダーページへ移動 public_calendar_func.go_to_calendar_page() #カレンダーページの要素をクリックする。 public_calendar_func.click_calendar(self.calendar_title) #カレンダーページ登録ページへ移動 public_calendar_func.go_to_calendar_register_page() #カレンダー情報入力 public_calendar_func.put_calendar_register_info() #カレンダー情報編集 public_calendar_func.click_calendar(self.calendar_title) public_calendar_func.go_to_calendar_edit_page() public_calendar_func.put_calendar_edit_info() self.driver_action_func.quit(new_normal_register_driver) self.go_to_admin_top_page() def go_to_page_list(self): admin_page_path = self.admin_xpath_lists['admin_page_path'] admin_list_page_path = self.admin_xpath_lists['admin_list_page_path'] self.driver_action_func.move_admin_page(admin_page_path, admin_list_page_path) def go_to_admin_top_page(self): self.driver_action_func.move_to_page_by_link( self.chrome, self.target_url + 'wp-admin/') def go_to_new_register_page(self): admin_new_regsiter_page_path = self.admin_xpath_lists[ 'admin_new_regsiter_page_path'] self.driver_action_func.single_move_admin_page( admin_new_regsiter_page_path)
def __init__(self, driver): self.chrome = driver self.admin_xpath_list_func = Admin_Menu_Path()