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 Test_User_Normal_Register:

    def __init__(self, driver):
        self.chrome = driver
        self.driver_func = Driver_Action( driver )

    #普通に登録
    def nomarl_put_user_info_to_form( self ):


        dt_now = datetime.datetime.now()

        register_btn_path = '//input[@class="btn_design"][@value = "登録"]'

        last_name_input = self.driver_func.get_element_by_name('last_name')
        self.driver_func.clear_item_info( last_name_input )
        self.driver_func.put_item_info( last_name_input, 'test' )

        first_name_input = self.driver_func.get_element_by_name('first_name')
        self.driver_func.clear_item_info( first_name_input )
        self.driver_func.put_item_info( first_name_input, 'test' )

        user_name_input = self.driver_func.get_element_by_name('log')
        self.driver_func.clear_item_info( user_name_input )
        self.driver_func.put_item_info( user_name_input, 'test'+str( dt_now.microsecond ) )

        user_email_input = self.driver_func.get_element_by_name('user_email')
        self.driver_func.clear_item_info( user_email_input )
        self.driver_func.put_item_info( user_email_input, 'test'+str( dt_now.microsecond )+'@exaple.com' )

        password_input = self.driver_func.get_element_by_name('password')
        self.driver_func.clear_item_info( password_input )
        self.driver_func.put_item_info( password_input, 'passwordを記載' )

        register_btn = self.driver_func.get_element_by_xpath(register_btn_path)
        register_btn.submit()

    # ブラウザーを閉じる
    def quit_browser(self):
        self.chrome.quit()
Example #3
0
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)
Example #4
0
class Test_User_Payment_Register:

    def __init__(self, driver):
        self.chrome = driver
        self.driver_func = Driver_Action( driver )

    #GuildPressのページで、PayPal決済ボタンをクリックした後にページが表示されているかチェックする関数
    def is_first_paypal_page_loaded( self ):

        try:
            self.driver_func.stop(10)
            payment_btn_xpath = '//button[@type="submit"]'
            target_click = '//a[text()="ここをクリックしてください"]'
            payment_btn = self.driver_func.get_element_by_xpath(payment_btn_xpath)
        except NoSuchElementException:
            print('no page')
            return self.is_first_paypal_page_loaded()
        else:
            print('page')
            return True

    def is_next_paypal_page_loaded( self ):

        try:
            self.driver_func.stop(10)

            login_email_elem = self.driver_func.get_element_by_name( 'login_email' )
            self.driver_func.clear_item_info( login_email_elem )
            self.driver_func.put_item_info( login_email_elem, 'paypalのメールアドレスを記載' )
        except NoSuchElementException:
            print('no is_next_paypal_page_loaded')
            return self.is_next_paypal_page_loaded()
        else:
            print('is_next_paypal_page_loaded')

            return True

    def is_third_paypal_page_loaded(self):

        try:
            self.driver_func.stop(10)
            login_password_elem = self.driver_func.get_element_by_name( 'login_password' )
            self.driver_func.clear_item_info( login_password_elem )
            self.driver_func.put_item_info( login_password_elem, 'passwordを記載' )

            btnLogin_elem = self.driver_func.get_element_by_name( 'btnLogin' )

        except NoSuchElementException:
            print('no is_third_paypal_page_loaded')
            return self.is_third_paypal_page_loaded()
        else:
            print('is_third_paypal_page_loaded')
            return True


    def is_last_paypal_page_loaded(self):

        try:
            self.driver_func.stop(10)
            confirmButtonTop_elem = self.driver_func.get_element_by_id( 'confirmButtonTop' )

        except NoSuchElementException:
            print('no is_last_paypal_page_loaded')
            return self.is_last_paypal_page_loaded()
        else:
            print('is_last_paypal_page_loaded')
            return True

    def click_new_register_page_pay_pal_btn( self ):

        pay_pal_btn_xpath = '//button[@id="paypal_btn"]'
        pay_pal_btn = self.driver_func.get_element_by_xpath(pay_pal_btn_xpath)
        pay_pal_btn.click()

        is_result = self.is_first_paypal_page_loaded()
        if( is_result == True ):
            self.driver_func.stop(15)
            payment_btn_xpath = '//button[@type="submit"]'
            payment_btn = self.driver_func.get_element_by_xpath(payment_btn_xpath)
            self.driver_func.click_item( payment_btn )

        is_thrid_result = self.is_new_paypal_page_loaded()
        if( is_thrid_result == True ):
            self.driver_func.stop(15)
            btnLogin_elem = self.driver_func.get_element_by_name( 'btnLogin' )
            self.driver_func.click_item( btnLogin_elem )

        is_last_result = self.is_last_paypal_page_loaded()
        if( is_last_result == True ):
            self.driver_func.get_element_by_id( 'confirmButtonTop' ).click()

        self.driver_func.stop(15)

    def is_new_paypal_page_loaded( self ):

        try:
            self.driver_func.stop(10)

            login_email_elem = self.driver_func.get_element_by_name( 'login_email' )
            self.driver_func.clear_item_info( login_email_elem )
            self.driver_func.put_item_info( login_email_elem, 'paypalのメールアドレスを記載' )

            login_password_elem = self.driver_func.get_element_by_name( 'login_password' )
            self.driver_func.clear_item_info( login_password_elem )
            self.driver_func.put_item_info( login_password_elem, 'passwordを記載' )

        except NoSuchElementException:
            print('no is_next_paypal_page_loaded')
            return self.is_next_paypal_page_loaded()
        else:
            print('is_next_paypal_page_loaded')

            return True

    def click_register_page_pay_pal_btn( self ):

        pay_pal_btn_xpath = '//button[@id="paypal_btn"]'
        pay_pal_btn = self.driver_func.get_element_by_xpath(pay_pal_btn_xpath)
        pay_pal_btn.click()

        is_result = self.is_first_paypal_page_loaded()
        if( is_result == True ):
            self.driver_func.stop(15)
            payment_btn_xpath = '//button[@type="submit"]'
            payment_btn = self.driver_func.get_element_by_xpath(payment_btn_xpath)
            self.driver_func.click_item( payment_btn )

        is_next_result = self.is_next_paypal_page_loaded()
        if( is_next_result == True ):
            self.driver_func.stop(15)
            next_payment_btn_xpath = '//button[@type="submit"][text()="次へ"]'
            next_payment_btn = self.driver_func.get_element_by_xpath(next_payment_btn_xpath)
            self.driver_func.click_item( next_payment_btn )

        self.driver_func.stop(15)
        result = self.check_paypal_login_email()

        if( result == True ):
            is_next_result = self.is_next_paypal_page_loaded()
            if( is_next_result == True ):
                next_payment_btn_xpath = '//button[@type="submit"][text()="次へ"]'
                next_payment_btn = self.driver_func.get_element_by_xpath(next_payment_btn_xpath)
                self.driver_func.click_item( next_payment_btn )


        is_thrid_result = self.is_third_paypal_page_loaded()
        if( is_thrid_result == True ):
            self.driver_func.stop(15)
            btnLogin_elem = self.driver_func.get_element_by_name( 'btnLogin' )
            self.driver_func.click_item( btnLogin_elem )

        is_last_result = self.is_last_paypal_page_loaded()
        if( is_last_result == True ):
            self.driver_func.get_element_by_id( 'confirmButtonTop' ).click()

        self.driver_func.stop(15)

    def check_paypal_login_email(self):
        try:
            email_input = self.driver_func.get_element_by_name('login_email')
        except NoSuchElementException:
            return False

        if( email_input.is_displayed() == True ):
            return True
        else :
            return False
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)
Example #6
0
class Admin_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()

    def get_normal_short_code( self, content_elem ):

        #テキストエリアのテキストを改行でリスト方にする。
        content_texts = content_elem.text.splitlines()
        last_index = len(content_texts) - 1

        content_texts[last_index] = content_texts[last_index]+'\n'+'[guild_press_news posts_num="" title=""]'
        return content_texts

    def put_content( self, content_elem, content_texts ):

        for content_text in content_texts:
            self.driver_func.put_item_info( content_elem, content_text+'\n' )

    def add_news_code( self ):
        content_elem = self.driver_func.get_element_by_name( 'content' )
        #テキストエリアのテキストを改行でリスト方にする。
        content_texts = content_elem.text.splitlines()
        last_index = len(content_texts) - 1

        content_texts[last_index] = content_texts[last_index]+'\n'+'[guild_press_news posts_num="" title=""]'
        
        self.driver_func.clear_item_info( content_elem )
        self.put_content( content_elem, content_texts )
        self.submit()

    def submit( self ):
        update_post_btn_xpath = self.admin_parts_xpath['update_post_btn']
        update_post_btn_elem = self.driver_func.get_element_by_xpath( update_post_btn_xpath )

        self.driver_func.click_item( update_post_btn_elem )

    def add_three_news_code( self ):
        content_elem = self.driver_func.get_element_by_name( 'content' )

         #テキストエリアのテキストを改行でリスト方にする。
        content_texts = content_elem.text.splitlines()
        last_index = len(content_texts) - 1

        content_texts[last_index] = content_texts[last_index].replace('posts_num=""', 'posts_num="3"', 1)

        self.driver_func.clear_item_info( content_elem )
        self.put_content( content_elem, content_texts )
        self.submit()

    def add_test_title_news_code( self ):
        content_elem = self.driver_func.get_element_by_name( 'content' )

         #テキストエリアのテキストを改行でリスト方にする。
        content_texts = content_elem.text.splitlines()
        last_index = len(content_texts) - 1

        content_texts[last_index] = content_texts[last_index].replace('title=""', 'title="selnium_test"', 1)

        self.driver_func.clear_item_info( content_elem )
        self.put_content( content_elem, content_texts )
        self.submit()
class Google_Calendar_Setting:


	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()

		self.google_api_xpath = self.admin_xpath_list_func.get_google_calendar_api_parts()


	def go_to_google_calendar_setting_page( self ):

		guild_press_setting_tab_elements = self.driver_func.get_elements_by_xpath( self.admin_parts_xpath['guild_press_setting_tab_xpath'] )

		self.driver_func.click_item( guild_press_setting_tab_elements[0] )



	#GoogleカレンダーのIDやシークレットを設定する。
	def put_google_calendar_setting_info( self ):


		google_client_id_element = self.driver_func.get_element_by_name( 'guild_press_google_client_id' )
		self.driver_func.clear_item_info( google_client_id_element )
		self.driver_func.put_item_info( google_client_id_element, 'client_id' )

		google_client_secret_element = self.driver_func.get_element_by_name( 'guild_press_google_client_secret' )
		self.driver_func.clear_item_info( google_client_secret_element )
		self.driver_func.put_item_info( google_client_secret_element, 'secret記載' )

		#情報を保存する。
		save_btn_element = self.driver_func.get_element_by_name( 'set' )
		self.driver_func.click_item( save_btn_element )


	#Googleカレンダーの設定ページへ移動して設定する。
	def set_google_calendar_api( self ):

		#calendar_apiを設定するためのボタンをクリック。
		google_auth_btn_element = self.driver_func.get_element_by_id( 'google_auth_btn' )
		self.driver_func.click_item( google_auth_btn_element )

		try:
			WebDriverWait(self.chrome, 3).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")

		emails = self.driver_func.get_element_by_name( 'identifier' )
		self.driver_func.clear_item_info( emails )
		self.driver_func.put_item_info( emails, 'メールアドレス記載' )

		next_btn_element = self.driver_func.get_element_by_id( 'identifierNext' )
		self.driver_func.click_item( next_btn_element )

		self.driver_func.stop(3)

		password = self.driver_func.get_element_by_name( 'password' )
		self.driver_func.clear_item_info( password )
		self.driver_func.put_item_info( password, 'パスワード記載' )

		next_btn_element = self.driver_func.get_element_by_id( 'passwordNext' )
		self.driver_func.click_item( next_btn_element )

		self.driver_func.stop(5)


		selector = self.driver_func.get_element_by_css_selector( 'div[class="U26fgb O0WRkf oG5Srb C0oVfc kHssdc M9Bg4d"]' )


		ActionChains(self.chrome ).move_to_element(selector).click(selector).perform()

		self.driver_func.stop(5)

		submit_btn_elem = self.driver_func.get_element_by_id( 'submit_approve_access' )
		self.driver_func.click_item( submit_btn_elem )
class Admin_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 add_texts_docs_info(self):

        texts_docs_lists = {
            'beginner_texts_docs': {
                'first_texts_docs': {
                    'text_title': '英語文法(初級講座)教材',
                    'category_name': '英語初級講座',
                    'img_dir':
                    self.base_dir + '/assets/texts_docs/english-grammer.pdf',
                    'page_block': '2'
                },
                'second_texts_docs': {
                    'text_title': '英語リスニング(初級講座)教材',
                    'category_name': '英語初級講座',
                    'img_dir':
                    self.base_dir + '/assets/texts_docs/english-listening.pdf',
                    'page_block': '1'
                },
                'third_texts_docs': {
                    'text_title': '英語リーディング(初級講座)教材',
                    'category_name': '英語初級講座',
                    'img_dir':
                    self.base_dir + '/assets/texts_docs/english-reading.pdf',
                    'page_block': '2'
                },
                'fourth_texts_docs': {
                    'text_title': '英語スピーキング(初級講座)教材',
                    'category_name': '英語初級講座',
                    'img_dir':
                    self.base_dir + '/assets/texts_docs/english-speaking.pdf',
                    'page_block': '2'
                },
                'fifth_texts_docs': {
                    'text_title': '英語単語(初級講座)教材',
                    'category_name': '英語初級講座',
                    'img_dir':
                    self.base_dir + '/assets/texts_docs/english-words.pdf',
                    'page_block': '1'
                }
            },
            'normal_texts_docs': {
                'first_texts_docs': {
                    'text_title': '英語文法(中級講座)教材',
                    'category_name': '英語中級講座',
                    'img_dir':
                    self.base_dir + '/assets/texts_docs/english-grammer.pdf',
                    'page_block': '2'
                },
                'second_texts_docs': {
                    'text_title': '英語リスニング(中級講座)教材',
                    'category_name': '英語中級講座',
                    'img_dir':
                    self.base_dir + '/assets/texts_docs/english-listening.pdf',
                    'page_block': '1'
                },
                'third_texts_docs': {
                    'text_title': '英語リーディング(中級講座)教材',
                    'category_name': '英語中級講座',
                    'img_dir':
                    self.base_dir + '/assets/texts_docs/english-reading.pdf',
                    'page_block': '2'
                },
                'fourth_texts_docs': {
                    'text_title': '英語スピーキング(中級講座)教材',
                    'category_name': '英語中級講座',
                    'img_dir':
                    self.base_dir + '/assets/texts_docs/english-speaking.pdf',
                    'page_block': '2'
                },
                'fifth_texts_docs': {
                    'text_title': '英語単語(中級講座)教材',
                    'category_name': '英語中級講座',
                    'img_dir':
                    self.base_dir + '/assets/texts_docs/english-words.pdf',
                    'page_block': '1'
                }
            },
            'advanced_texts_docs': {
                'first_texts_docs': {
                    'text_title': '英語文法(上級講座)教材',
                    'category_name': '英語上級講座',
                    'img_dir':
                    self.base_dir + '/assets/texts_docs/english-grammer.pdf',
                    'page_block': '2'
                },
                'second_texts_docs': {
                    'text_title': '英語リスニング(上級講座)教材',
                    'category_name': '英語上級講座',
                    'img_dir':
                    self.base_dir + '/assets/texts_docs/english-listening.pdf',
                    'page_block': '1'
                },
                'third_texts_docs': {
                    'text_title': '英語リーディング(上級講座)教材',
                    'category_name': '英語上級講座',
                    'img_dir':
                    self.base_dir + '/assets/texts_docs/english-reading.pdf',
                    'page_block': '2'
                },
                'fourth_texts_docs': {
                    'text_title': '英語スピーキング(上級講座)教材',
                    'category_name': '英語上級講座',
                    'img_dir':
                    self.base_dir + '/assets/texts_docs/english-speaking.pdf',
                    'page_block': '2'
                },
                'fifth_texts_docs': {
                    'text_title': '英語単語(上級講座)教材',
                    'category_name': '英語上級講座',
                    'img_dir':
                    self.base_dir + '/assets/texts_docs/english-words.pdf',
                    'page_block': '1'
                }
            }
        }

        texts_docs_lists_test = {
            'beginner_texts_docs': {
                'first_texts_docs': {
                    'text_title': '英語文法(初級講座)教材',
                    'category_name': '英語初級講座',
                    'img_dir':
                    self.base_dir + '/assets/texts_docs/english-grammer.pdf',
                    'page_block': '2'
                },
            }
        }

        for texts_docs_lists_name, texts_docs_lists_value in texts_docs_lists.items(
        ):
            for list_name, text_docs_lists in texts_docs_lists_value.items():
                self.add_info(text_docs_lists)

    def add_info(self, text_docs_lists):

        new_btn_xpath = self.admin_list_parts_xpath['add_new_texts_page']
        submit_btn_xpath = self.admin_parts_xpath[
            'guild_press_text_docs_submit_xpath']

        new_btn_elem = self.driver_func.get_element_by_xpath(new_btn_xpath)
        self.driver_func.click_item(new_btn_elem)

        post_title_elem = self.driver_func.get_element_by_name('gp_post_title')
        self.driver_func.put_item_info(post_title_elem,
                                       text_docs_lists['text_title'])

        self.upload_texts_docs(text_docs_lists)

        self.add_category(text_docs_lists)

        submit_btn_element = self.driver_func.get_element_by_xpath(
            submit_btn_xpath)
        self.driver_func.click_item(submit_btn_element)

    def add_category(self, text_docs_lists):
        radio_btn_xpath = self.admin_parts_xpath[
            'guild_press_text_docs_rank_block_xpath']
        check_box_xpath = self.admin_parts_xpath[
            'guild_press_text_docs_rank_check_box_xpath']
        label_xpath = self.admin_parts_xpath[
            'guild_press_text_docs_rank_label_xpath']

        texts_docs_btn_elem = self.driver_func.get_element_by_name(
            'gp_lesson_category')
        self.driver_func.set_select_item(texts_docs_btn_elem,
                                         text_docs_lists['category_name'])

        if (text_docs_lists['page_block'] == '2'):
            guild_press_page_block_elem = self.driver_func.get_element_by_xpath(
                radio_btn_xpath)
            self.driver_func.click_item(guild_press_page_block_elem)

            block_check_elem = self.driver_func.get_elements_by_xpath(
                check_box_xpath)
            label_elem = self.driver_func.get_elements_by_xpath(label_xpath)

            link_elem = self.basic_func.get_target_link_element(
                label_elem, block_check_elem, 'ゴールド会員')
            self.driver_func.click_item(link_elem)

        elif (text_docs_lists['page_block'] == '1'):
            pass

    def upload_texts_docs(self, text_docs_lists):

        texts_docs_btn_elem = self.driver_func.get_element_by_name('csv')
        self.driver_func.click_item(texts_docs_btn_elem)

        media_input_file = self.admin_parts_xpath['media_input_file']
        #画像をアップロード
        img_btn_element = self.driver_func.get_element_by_xpath(
            media_input_file)
        self.driver_func.put_item_info(img_btn_element,
                                       text_docs_lists['img_dir'])

        #教材のアップロードが完了できているかチェックする、
        self.is_click_media_submit_btn()

    def is_click_media_submit_btn(self):
        texts_docs_submit_btn = self.admin_parts_xpath['texts_docs_submit_btn']

        self.driver_func.stop(2)
        img_submit_element = self.driver_func.get_element_by_xpath(
            texts_docs_submit_btn)

        if (img_submit_element.is_enabled()):
            self.driver_func.click_item(img_submit_element)

        else:
            self.is_click_media_submit_btn()

    def get_dwd_show_shortcode(self):
        show_short_code_xpath = self.admin_parts_xpath[
            'guild_press_text_docs_show_shortcode_xpath']
        dwd_short_code_xpath = self.admin_parts_xpath[
            'guild_press_text_docs_dwd_shortcode_xpath']

        show_short_elem = self.driver_func.get_element_by_xpath(
            show_short_code_xpath)
        dwd_short_elem = self.driver_func.get_element_by_xpath(
            dwd_short_code_xpath)

        short_codes = {
            'show_shortcode': show_short_elem.text,
            'dwd_shortcode': dwd_short_elem.text,
        }

        return short_codes

    def put_short_codes_to_lesson_detail(self, texts_docs_shortcodes):

        show_shortcode = texts_docs_shortcodes['show_shortcode']
        dwd_shortcode = texts_docs_shortcodes['dwd_shortcode']

        first_lesson_detail_xpath = self.admin_parts_xpath[
            'guild_press_first_lesson_detail']
        first_lesson_detail_elem = self.driver_func.get_element_by_xpath(
            first_lesson_detail_xpath)

        self.driver_func.click_item(first_lesson_detail_elem)

        content_elem = self.driver_func.get_element_by_name('content')

        #テキストエリアのテキストを改行でリスト方にする。
        content_texts = content_elem.text.splitlines()
        last_index = len(content_texts) - 1

        content_texts[
            last_index] = show_shortcode + '\n' + dwd_shortcode + '\n' + content_texts[
                last_index]

        self.driver_func.clear_item_info(content_elem)

        for content_text in content_texts:
            self.driver_func.put_item_info(content_elem, content_text + '\n')

        # update_post_btn_xpath = self.admin_parts_xpath['update_post_btn']
        # 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.click_update_btn()

        #貼り付けたショートコードの確認
        self.go_to_short_codes_page()

    def go_to_short_codes_page(self):

        post_permalink_xpath = self.admin_parts_xpath['post_permalink']
        post_permalink_elem = self.driver_func.get_element_by_xpath(
            post_permalink_xpath)
        self.driver_func.click_item(post_permalink_elem)

        # スクールダウンして表示を確認する。
        self.driver_func.scroll_down(self.chrome)

        dwd_btn_xpath = self.public_parts_xpath['dwd_btn_xpath']
        dwd_btn_elem = self.driver_func.get_element_by_xpath(dwd_btn_xpath)

        self.driver_func.click_item(dwd_btn_elem)