コード例 #1
0
class RatePlansPage:
    url = "https://stag.dazn.com/de-DE/account/payment-plan"

    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    rate_plan_tile_css = "[data-test-id=\"plan-details__title\"]"

    annual_rate_plan_button_css = "[data-test-id=\"plan-details__wrapper_Annual\"]"
    monthly_rate_plan_button_css = "[data-test-id=\"plan-details__wrapper_Month\"]"

    def annual_plan_click(self):
        annual_button_click = self.driver.find_element_by_css_selector(self.annual_rate_plan_button_css)
        annual_button_click.click()

    def monthly_plan_click(self):
        monthly_button_click = self.driver.find_element_by_css_selector(self.monthly_rate_plan_button_css)
        monthly_button_click.click()

    def wait_for_page_to_be_open(self):
        self.lib.wait_for_element(self.rate_plan_tile_css, By.CSS_SELECTOR)

    # funkcja na wybor rate planu powinna uwzgledniac cookiebanner, czy przerzucac go do Lib,
    # tak samo jak language switcher czy przerzucic do lib i jak / automatyczne wybranie drugiego jezyka
コード例 #2
0
class HomePageTiles:

    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    tile_css = "[data-test-id=\"IMAGE_WRAPPER\"]"


    def scroll_to_element(self, sport_name):
        tile = self.driver.find_element_by_css_selector(f"[alt=\"{sport_name}\"]")
        actions = ActionChains(self.driver)
        actions.move_to_element(tile).perform()

    def click_all_sports_tile(self, tile_name):
        all_sports_tile = self.driver.find_element_by_css_selector(f"[alt=\"{tile_name}\"]")
        all_sports_tile.click()

    def wait_for_tiles_to_load(self):
        self.lib.wait_for_element(self.tile_css, By.CSS_SELECTOR)

    def wait_for_sports_tiles_to_load(self, sport_name):
        self.lib.wait_for_element(f"[alt=\"{sport_name}\"]", By.CSS_SELECTOR)

    def go_to_sport_page(self, sport_name):
        self.wait_for_sports_tiles_to_load(sport_name)
        self.scroll_to_element(sport_name)
        self.click_all_sports_tile(sport_name)
コード例 #3
0
class FallbackPage:
    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    user_name_field_css = "#username"
    password_field_css = "#password"
    submit_button_css = ".button"

    def fill_username_field(self, text):
        username_field = self.driver.find_element_by_css_selector(
            self.user_name_field_css)
        username_field.clear()
        username_field.send_keys(text)

    def fill_password_field(self, text):
        password_field = self.driver.find_element_by_css_selector(
            self.password_field_css)
        password_field.clear()
        password_field.send_keys(text)

    def submit_button_click(self):
        submit_button = self.driver.find_element_by_css_selector(
            self.submit_button_css)
        submit_button.click()

    def wait_for_page_to_be_open(self):
        self.lib.wait_for_element(self.submit_button_css, By.CSS_SELECTOR)

    def complete_fallback_scenario(self, username, password):
        self.wait_for_page_to_be_open()
        self.fill_username_field(username)
        self.fill_password_field(password)
        self.submit_button_click()
コード例 #4
0
class SearchPage:
    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    search_field_css = "[data-test-id=\"SEARCH_INPUT\"]"

    def wait_for_page_to_be_open(self):
        self.lib.wait_for_element(self.search_field_css, By.CSS_SELECTOR)
コード例 #5
0
class ConfirmationPageMassive:
    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    confirmation_page_css = ".ConfirmationView"
    confirmation_button_css = ".buttonText"

    def confirmation_button_click(self):
        confirmation_button_click = self.driver.find_element_by_css_selector(
            self.confirmation_button_css)
        confirmation_button_click.click()

    def wait_for_page_to_be_open(self):
        self.lib.wait_for_element(self.confirmation_page_css, By.CSS_SELECTOR)
コード例 #6
0
class ConfirmationPage:
    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    confirmation_button_css = "[data-test-id=\"signUpConfirmation__BUTTON\"]"

    def confirmation_button_click(self):
        confirmation_button_click = self.driver.find_element_by_css_selector(
            self.confirmation_button_css)
        confirmation_button_click.click()

    def wait_for_page_to_be_open(self):
        self.lib.wait_for_element(self.confirmation_button_css,
                                  By.CSS_SELECTOR)
コード例 #7
0
ファイル: home_page_top_bar.py プロジェクト: xpdazn/mentoring
class HomePageTopBar:
    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    home_page_header_nav_item = "[data-test-id=\"HEADER_NAVIGATION_ITEM_LINK\"]"
    dazn_logo_css = ".logo___logo___3BUpT"
    home_css = ".header-nav___left-nav___2-Pp3 > li:nth-child(1) > a:nth-child(1)"
    schedule_css = ".header-nav___left-nav___2-Pp3 > li:nth-child(2) > a:nth-child(1)"
    sports_css = ".header-nav___left-nav___2-Pp3 > li:nth-child(3) > button:nth-child(1)"
    menu_css = ".header-nav___right-nav___3eW6Q > li:nth-child(1) > button:nth-child(1)"
    search_css = "[data-test-id=\"NAVIGATION_SEARCH_ICON_OPEN\"]"

    tile_css = "[data-test-id=\"IMAGE_WRAPPER\"]"

    # jak przerobic cssy?
    # czy do css selectora jako parametr da sie dodac inner text / xpath / jak to zrobic

    def click_dazn_logo(self):
        dazn_logo = self.driver.find_element_by_css_selector(
            self.dazn_logo_css)
        dazn_logo.click()

    def click_home(self):
        home = self.driver.find_element_by_css_selector(self.home_css)
        home.click()

    def click_schedule(self):
        schedule = self.driver.find_element_by_css_selector(self.schedule_css)
        schedule.click()

    def click_sports_dropdown(self):
        sports_dropdown = self.driver.find_element_by_css_selector(
            self.sports_css)
        sports_dropdown.click()

    def click_menu_dropdown(self):
        menu_dropdown = self.driver.find_element_by_css_selector(self.menu_css)
        menu_dropdown.click()

    def click_search(self):
        search = self.driver.find_element_by_css_selector(self.search_css)
        search.click()

    def wait_for_page_to_be_open(self):
        self.lib.wait_for_element(self.home_page_header_nav_item,
                                  By.CSS_SELECTOR)
コード例 #8
0
class CompetitorPageTiles:
    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    squad_css = "[data-test-id=\"SQUADS_BUTTON\"]"
    tile_css = "[data-test-id=\"IMAGE_WRAPPER\"]"

    def click_squad(self):
        squad = self.driver.find_element_by_css_selector(self.squad_css)
        squad.click()

    def wait_for_tiles_to_load(self):
        self.lib.wait_for_element(self.tile_css, By.CSS_SELECTOR)

    def wait_for_page_to_load(self):
        self.lib.wait_for_element(self.squad_css, By.CSS_SELECTOR)
コード例 #9
0
class SportsDropdown:
    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    # Selector
    sports_button_css = ".header-nav___left-nav___2-Pp3 > li:nth-child(3) > button:nth-child(1)"
    sports_page_header_css = "[data-test-id=\"PAGE_TITLE\"]"

    single_sport_in_sport_list = "[data-test-id=\"SPORTS-MENU-LIST-ITEM\"]"
    sports_dropdown_container = "[data-test-id=\"SPORTS-MENU-DROPDOWN\"] > *"

    # Actions
    def click_sports_button(self):
        sports_button = self.driver.find_element_by_css_selector(
            self.sports_button_css)
        sports_button.click()

    def select_sport(self, number):
        all_sports_list = self.driver.find_elements_by_css_selector(
            self.sports_dropdown_container)
        element = all_sports_list[number].find_element_by_css_selector(
            self.single_sport_in_sport_list)
        element.click()

    def wait_for_sport_drop_down(self):
        self.lib.wait_for_element(self.single_sport_in_sport_list,
                                  By.CSS_SELECTOR)

    def wait_for_sport_page(self):
        self.lib.wait_for_element(self.sports_page_header_css, By.CSS_SELECTOR)

    def select_sport_by_name(self, name):
        sports = self.driver.find_element_by_css_selector(
            self.sports_dropdown_container)
        # for sport in sports:
        #     if sport.text == name:
        #         selected_sport = sport.find_element_by_css_selector(self.single_sport_in_sport_list)
        #         selected_sport.click()
        #         break

        any_sport_button_css = f"[title=\"{name}\"]"
        sport = sports.find_element_by_css_selector(any_sport_button_css)
        sport.click()
コード例 #10
0
ファイル: competitions_page.py プロジェクト: xpdazn/mentoring
class CompetitionsPageTiles:

    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    tile_css = "[data-test-id=\"IMAGE_WRAPPER\"]"
    competitors_container_css = "[data-test-id=\"rail-Competitors\"]"
    competitor_name_css = "[data-test-id=\"DEFAULT_TILE_TITLE\"]"


    def scroll_to_element(self, competitor_name):
        tile = self.driver.find_element_by_css_selector(f"[alt=\"{competitor_name}\"]")
        actions = ActionChains(self.driver)
        actions.move_to_element(tile).perform()

    def click_competitor_tile(self, tile_name):
        competitor_tile = self.driver.find_element_by_css_selector(f"[alt=\"{tile_name}\"]")
        competitor_tile.click()

    def wait_for_tiles_to_load(self):
        self.lib.wait_for_element(self.tile_css, By.CSS_SELECTOR)

    def wait_for_competitors_tiles_to_load(self, competitor_name):
        self.lib.wait_for_element(f"[alt=\"{competitor_name}\"]", By.CSS_SELECTOR)

    def capture_competitors_names(self):
        competitors_rail = self.driver.find_element_by_css_selector(self.competitors_container_css)
        names = competitors_rail.find_elements_by_css_selector(self.competitor_name_css)
        names_list = []
        for team in names:
            names_list.append(team.get_attribute("innerHTML"))
        print(names_list)
        return names_list

    def go_to_competitor_page(self, competitor_name):
        self.wait_for_competitors_tiles_to_load(competitor_name)
        self.scroll_to_element(competitor_name)
        self.click_competitor_tile(competitor_name)
コード例 #11
0
class SignUpPageMassive:
    url = "https://stag.dazn.com/en-JP/account/signup"

    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    create_account_button_css = ".signup"
    active_create_account_button_css = "/html/body/div[2]/div/div[1]/div[1]/div/form/fieldset/div[5]/button"

    first_name_css = "#signUpFirstName"
    last_name_css = "#signUpLastName"
    email_css = "#signUpEmail"
    password_css = "#signUpPassword"
    repeat_password_css = "#signUpPasswordRepeat"
    marketing_opt_css = ".Checkbox"

    def fill_first_name_field(self, text):
        first_name_field = self.driver.find_element_by_css_selector(self.first_name_css)
        first_name_field.clear()
        first_name_field.send_keys(text)

    def fill_last_name_field(self, text):
        last_name = self.driver.find_element_by_css_selector(self.last_name_css)
        last_name.clear()
        last_name.send_keys(text)

    def fill_email_field(self, text):
        email_field = self.driver.find_element_by_css_selector(self.email_css)
        email_field.clear()
        email_field.send_keys(text)

    def fill_password_field(self, text):
        password_field = self.driver.find_element_by_css_selector(self.password_css)
        password_field.clear()
        password_field.send_keys(text)

    def fill_repeat_password_field(self, text):
        password_field = self.driver.find_element_by_css_selector(self.repeat_password_css)
        password_field.clear()
        password_field.send_keys(text)

    def click_marketing_opt(self):
        marketing_opt = self.driver.find_element_by_css_selector(self.marketing_opt_css)
        marketing_opt.click()

    def click_sign_up_button(self):
        sign_up_button = self.driver.find_element_by_css_selector(self.active_create_account_button_css)
        sign_up_button.click()

    def wait_for_page_to_be_open(self):
        self.lib.wait_for_element(self.create_account_button_css, By.CSS_SELECTOR)


    def fill_sign_up_user_details(self, fname, lname, email, password, repeat_password):
        self.wait_for_page_to_be_open()
        self.fill_first_name_field(fname)
        self.fill_last_name_field(lname)
        self.fill_email_field(email)
        self.fill_password_field(password)
        self.fill_repeat_password_field(repeat_password)
        self.click_marketing_opt()
コード例 #12
0
class MenuDropdown:
    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    menu_container_css = "[data-test-id=\"MY-DAZN-MENU-DROPDOWN\"]"
    settings_css = "[title=\"Settings\"]"
    my_account_css = ".header-nav___dropdown-right___2O8UQ > li:nth-child(2) > a:nth-child(1)"
    help_css = "[title=\"Help\"]"
    sign_out_css = "button.header-nav___dropdown-link___36opA"
    about_css = "[title=\"About\"]"
    privacy_policy_css = "[title=\"Privacy Policy and Cookie Notice\"]"
    terms_and_condition_css = "[title=\"Terms and Conditions\"]"
    app_version_css = "[data-test-id=\"APP_VERSION\"]"

    sign_out_banner_css = "[data-test-id=\"DIALOG_MODAL_CONTAINER\"]"
    sign_out_confirmation_button_css = "[aria-label=\"SIGN OUT\"]"
    sign_out_cancel_button_css = "[aria-label=\"CANCEL\"]"

    dazn_logo_help_page_css = ".logo"

    def click_settings_button(self):
        settings = self.driver.find_element_by_css_selector(self.settings_css)
        settings.click()

    def click_my_account_button(self):
        my_account = self.driver.find_element_by_css_selector(self.my_account_css)
        my_account.click()

    def click_help_button(self):
        help_button = self.driver.find_element_by_css_selector(self.help_css)
        help_button.click()

    def click_sign_out_button(self):
        sign_out = self.driver.find_element_by_css_selector(self.sign_out_css)
        sign_out.click()

    def about_button(self):
        about = self.driver.find_element_by_css_selector(self.about_css)
        about.click()

    def click_privacy_policy_button(self):
        privacy_policy = self.driver.find_element_by_css_selector(self.privacy_policy_css)
        privacy_policy.click()

    def click_terms_and_conditions_button(self):
        terms_and_conditions = self.driver.find_element_by_css_selector(self.terms_and_condition_css)
        terms_and_conditions.click()

    def click_sign_out_confirmation(self):
        sign_out_confirmation = self.driver.find_element_by_css_selector(self.sign_out_confirmation_button_css)
        sign_out_confirmation.click()

    def click_sign_out_cancelation(self):
        sign_out_cancelation = self.driver.find_element_by_css_selector(self.sign_out_cancel_button_css)
        sign_out_cancelation.click()

    def click_dazn_logo_on_help_page(self):
        logo_on_help_page = self.driver.find_element_by_css_selector(self.dazn_logo_help_page_css)
        logo_on_help_page.click()

    def wait_for_menu_drop_down(self):
        self.lib.wait_for_element(self.menu_container_css, By.CSS_SELECTOR)

    def wait_for_sign_out_banner(self):
        self.lib.wait_for_element(self.sign_out_banner_css, By.CSS_SELECTOR)
コード例 #13
0
class PaymentPageMassive:
    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    free_trial_important_button_css = "[data-test-id=\"DIALOG_BUTTON-0\"]"

    payment_methods_css = ".PaymentAccordion"

    credit_card_method_css = "div.AccordionSection:nth-child(1) > div:nth-child(1) > div:nth-child(1)"
    credit_card_number_css = "#paymentCreditCardNumber"
    credit_card_expiry_month_css = "#paymentCreditCardExpiryMonth"
    credit_card_expiry_year_css = "#paymentCreditCardExpiryYear"
    credit_card_security_code_css = "#paymentCreditCardCVV"
    credit_card_start_button_css = "button.ButtonBase:nth-child(4)"

    def credit_card_method_click(self):
        credit_card_method = self.driver.find_element_by_css_selector(
            self.credit_card_method_css)
        credit_card_method.click()

    def fill_card_number_field(self, text):
        card_number = self.driver.find_element_by_css_selector(
            self.credit_card_number_css)
        card_number.clear()
        card_number.send_keys(text)

    def fill_expiry_date_month_field(self, text):
        expiry_month = self.driver.find_element_by_css_selector(
            self.credit_card_expiry_month_css)
        expiry_month.send_keys(text)

    def fill_expiry_date_year_field(self, text):
        expiry_year = self.driver.find_element_by_css_selector(
            self.credit_card_expiry_year_css)
        expiry_year.send_keys(text)

    def fill_cvc_field(self, text):
        security_code = self.driver.find_element_by_css_selector(
            self.credit_card_security_code_css)
        security_code.clear()
        security_code.send_keys(text)

    def credit_card_cta_button_click(self):
        cta_button = self.driver.find_element_by_css_selector(
            self.credit_card_start_button_css)
        cta_button.click()

    def wait_for_page_to_be_open(self):
        self.lib.wait_for_element(self.payment_methods_css, By.CSS_SELECTOR)
        try:
            self.driver.find_element_by_css_selector(
                self.free_trial_important_button_css).click()
        except NoSuchElementException:
            print("The user is granted Free Trial")

    def pds2_credit_card_payment_method_flow(self, card_list):
        self.wait_for_page_to_be_open()
        self.credit_card_method_click()
        self.fill_card_number_field(card_list[0])
        self.fill_expiry_date_month_field(card_list[1])
        self.fill_expiry_date_year_field(card_list[2])
        self.fill_cvc_field(card_list[3])
        self.credit_card_cta_button_click()
コード例 #14
0
class PaymentPage:
    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    free_trial_important_button_css = "[data-test-id=\"DIALOG_BUTTON-0\"]"

    payment_methods_css = "[data-test-id=\"select-payment__options\"]"
    change_payment_method_css = "[data-test-id=\"select-payment__change-subscription-button\"]"
    direct_debit_method_css = "[data-test-id=\"select-payment__option__DirectDebit_Button\"]"
    account_name_css = "[data-test-id=\"ACCOUNT_NAME\"]"
    iban_css = "[data-test-id=\"IBAN\"]"
    iban_start_button_css = "[data-test-id=\"DIRECTDEBIT_PAYMENT_BUTTON\"]"

    # Auth 2.0
    credit_card_method_css = "[data-test-id=\"select-payment__option__CreditCard\"]"
    credit_card_number_css = "[data-test-id=\"CREDIT_CARD_NUMBER\"]"
    credit_card_expiry_month_css = "[data-test-id=\"EXPIRY_DATE-0\"]"
    credit_card_expiry_year_css = "[data-test-id=\"EXPIRY_DATE-1\"]"
    credit_card_security_code_css = "[data-test-id=\"SECURITY_CODE\"]"
    credit_card_start_button_css = "[data-test-id=\"CREDITCARD_PAYMENT_BUTTON\"]"

    # Auth_2_PSD2 fields
    iframes_class_name = "js-iframe"

    credit_card_method_pds2_css = "[data-test-id=\"select-payment__option__CreditCard_Button\"]"

    card_number_psd2_iframe_css = "[data-cse=\"encryptedCardNumber\"]"
    card_number_psd2_fill_css = '[aria-label=\"Credit or debit card number\"]'

    expiry_date_month_psd2_iframe_css = "[data-cse=\"encryptedExpiryMonth\"]"
    expiry_date_month_psd2_fill_css = "[aria-label=\"Credit or debit card expiration month - 2 digits\"]"
    expiry_date_year_psd2_iframe_css = "[data-cse=\"encryptedExpiryYear\"]"
    expiry_date_year_psd2_fill_css = "[aria-label=\"Credit or debit card expiration year - 2 digits\"]"
    security_code_psd2_iframe_css = "[data-cse=\"encryptedSecurityCode\"]"
    security_code_psd2_fill_css = "[aria-label=\"Credit or debit card 3 or 4 digit security code\"]"

    # card_number_psd2_css = "div.field___field___2-rqv:nth-child(2) > div:nth-child(1) > div:nth-child(2)"
    # expiry_date_month_css = "div.field___field___2-rqv:nth-child(3) > div:nth-child(1) > div:nth-child(2)"
    # expiry_date_year_css = "div.field___field___2-rqv:nth-child(3) > div:nth-child(1) > div:nth-child(2)"
    # security_code_css = "div.field___field___2-rqv:nth-child(4) > div:nth-child(1) > div:nth-child(2)"
    street_adress_css = "div.field___field___Q96I_:nth-child(5) > div:nth-child(1) > input:nth-child(2)"
    house_number_css = "div.field___field___Q96I_:nth-child(6) > div:nth-child(1) > input:nth-child(2)"
    postal_code_css = "div.field___field___Q96I_:nth-child(7) > div:nth-child(1) > input:nth-child(2)"
    city_css = "div.field___field___Q96I_:nth-child(8) > div:nth-child(1) > input:nth-child(2)"
    credit_card_psd2_start_button_css = "button.button___button___3oHbw:nth-child(6)"

    paypal_method_css = "[data-test-id=\"select-payment__option__PayPal\"]"
    paypal_start_button_css = ".paymentDetails___paypal-button___XE9Ml"

    gift_code_method_css = "[data-test-id=\"select-payment__giftcode\"]"
    gift_code_field_css = "[data-test-id=\"GIFT_CODE\"]"
    gift_code_start_button_css = "[data-test-id=\"select-payment__giftcode-redeem-button\"]"

    def change_subscription_on_payment_details_page_click(self):
        change_subscription = self.driver.find_element_by_css_selector(
            self.change_payment_method_css)
        change_subscription.click()

    def direct_debit_method_click(self):
        direct_debit_method = self.driver.find_element_by_css_selector(
            self.direct_debit_method_css)
        direct_debit_method.click()

    def credit_card_method_click(self):
        credit_card_method = self.driver.find_element_by_css_selector(
            self.credit_card_method_css)
        credit_card_method.click()

    def pds2_select_credit_card_method_click(self):
        credit_card_method = self.driver.find_element_by_css_selector(
            self.credit_card_method_pds2_css)
        credit_card_method.click()

    def psd2_fill_card_number_field(self, text):
        self.lib.wait_for_element(self.card_number_psd2_iframe_css,
                                  By.CSS_SELECTOR)
        element = self.driver.find_element_by_css_selector(
            self.card_number_psd2_iframe_css)
        iframe = element.find_element_by_class_name(self.iframes_class_name)
        self.driver.switch_to.frame(iframe)
        card_number = self.driver.find_element_by_css_selector(
            self.card_number_psd2_fill_css)
        card_number.clear()
        card_number.send_keys(text)
        self.driver.switch_to.default_content()

    def psd2_fill_expiry_date_month_field(self, text):
        self.lib.wait_for_element(self.expiry_date_month_psd2_iframe_css,
                                  By.CSS_SELECTOR)
        element = self.driver.find_element_by_css_selector(
            self.expiry_date_month_psd2_iframe_css)
        iframe = element.find_element_by_class_name(self.iframes_class_name)
        self.driver.switch_to.frame(iframe)
        expiry_month = self.driver.find_element_by_css_selector(
            self.expiry_date_month_psd2_fill_css)
        expiry_month.clear()
        expiry_month.send_keys(text)
        self.driver.switch_to.default_content()

    def psd2_fill_expiry_date_year_field(self, text):
        self.lib.wait_for_element(self.expiry_date_year_psd2_iframe_css,
                                  By.CSS_SELECTOR)
        element = self.driver.find_element_by_css_selector(
            self.expiry_date_year_psd2_iframe_css)
        iframe = element.find_element_by_class_name(self.iframes_class_name)
        self.driver.switch_to.frame(iframe)
        expiry_year = self.driver.find_element_by_css_selector(
            self.expiry_date_year_psd2_fill_css)
        expiry_year.clear()
        expiry_year.send_keys(text)
        self.driver.switch_to.default_content()

    def psd2_fill_cvc_field(self, text):
        self.lib.wait_for_element(self.security_code_psd2_iframe_css,
                                  By.CSS_SELECTOR)
        element = self.driver.find_element_by_css_selector(
            self.security_code_psd2_iframe_css)
        iframe = element.find_element_by_class_name(self.iframes_class_name)
        self.driver.switch_to.frame(iframe)
        security_code = self.driver.find_element_by_css_selector(
            self.security_code_psd2_fill_css)
        security_code.clear()
        security_code.send_keys(text)
        self.driver.switch_to.default_content()

    def psd2_fill_street_address_field(self, text):
        street_address = self.driver.find_element_by_css_selector(
            self.street_adress_css)
        street_address.clear()
        street_address.send_keys(text)

    def psd2_fill_house_number_field(self, text):
        house_number = self.driver.find_element_by_css_selector(
            self.house_number_css)
        house_number.clear()
        house_number.send_keys(text)

    def psd2_fill_postal_code_field(self, text):
        postal_code = self.driver.find_element_by_css_selector(
            self.postal_code_css)
        postal_code.clear()
        postal_code.send_keys(text)

    def psd2_fill_city_field(self, text):
        city = self.driver.find_element_by_css_selector(self.city_css)
        city.clear()
        city.send_keys(text)

    def psd2_credit_card_cta_button_click(self):
        cta_button = self.driver.find_element_by_css_selector(
            self.credit_card_psd2_start_button_css)
        cta_button.click()

    def paypal_method_click(self):
        paypal_method = self.driver.find_element_by_css_selector(
            self.payment_methods_css)
        paypal_method.click()

    def gift_code_method_click(self):
        gift_code_method = self.driver.find_element_by_css_selector(
            self.gift_code_method_css)
        gift_code_method.click()

    def wait_for_page_to_be_open(self):
        self.lib.wait_for_element(self.payment_methods_css, By.CSS_SELECTOR)
        try:
            self.driver.find_element_by_css_selector(
                self.free_trial_important_button_css).click()
            print("The user already had Free Trial")
        except NoSuchElementException:
            print("The user is granted Free Trial")

    def psd2_wait_for_adyen_script_to_load(self):
        self.lib.wait_for_element(self.iframes_class_name, By.CLASS_NAME)

        # time.sleep(3)

    def pds2_credit_card_payment_method_flow(self, card_list):
        self.wait_for_page_to_be_open()
        self.pds2_select_credit_card_method_click()
        self.psd2_wait_for_adyen_script_to_load()
        time.sleep(4)
        self.psd2_fill_card_number_field(card_list[0])
        time.sleep(2)
        self.psd2_fill_expiry_date_month_field(card_list[1])
        time.sleep(2)
        self.psd2_fill_expiry_date_year_field(card_list[2])
        time.sleep(2)
        self.psd2_fill_cvc_field(card_list[3])
        # self.psd2_fill_street_address_field("Street")
        # self.psd2_fill_house_number_field("House")
        # self.psd2_fill_postal_code_field("Postal Code")
        # self.psd2_fill_city_field("City")
        self.psd2_credit_card_cta_button_click()
コード例 #15
0
class SignUpPage:
    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    create_account_button_css = "[data-test-id=\"create-account__button\"]"

    first_name_css = "[data-test-id=\"FIRST_NAME\"]"
    last_name_css = "[data-test-id=\"LAST_NAME\"]"
    email_css = "[data-test-id=\"EMAIL\"]"
    confirm_email_css = "[data-test-id=\"CONFIRM_EMAIL\"]"
    password_css = "[data-test-id=\"PASSWORD\"]"
    show_password_css = "[data-test-id=\"SHOW_PASSWORD\"]"
    marketing_opt_css = "[data-test-id=\"checkbox__text\"]"

    def fill_first_name_field(self, text):
        first_name_field = self.driver.find_element_by_css_selector(
            self.first_name_css)
        first_name_field.clear()
        first_name_field.send_keys(text)

    def fill_last_name_field(self, text):
        last_name = self.driver.find_element_by_css_selector(
            self.last_name_css)
        last_name.clear()
        last_name.send_keys(text)

    def fill_email_field(self, text):
        email_field = self.driver.find_element_by_css_selector(self.email_css)
        email_field.clear()
        email_field.send_keys(text)

    def fill_confirm_email_field(self, text):
        confirm_email_field = self.driver.find_element_by_css_selector(
            self.confirm_email_css)
        confirm_email_field.clear()
        confirm_email_field.send_keys(text)

    def fill_password_field(self, text):
        password_field = self.driver.find_element_by_css_selector(
            self.password_css)
        password_field.clear()
        password_field.send_keys(text)

    def click_marketing_opt(self):
        marketing_opt = self.driver.find_element_by_css_selector(
            self.marketing_opt_css)
        marketing_opt.click()

    def click_sign_up_button(self):
        sign_up_button = self.driver.find_element_by_css_selector(
            self.create_account_button_css)
        sign_up_button.click()

    def wait_for_page_to_be_open(self):
        self.lib.wait_for_element(self.create_account_button_css,
                                  By.CSS_SELECTOR)

    def fill_sign_up_user_details(self, fname, lname, email, confemail,
                                  password):
        self.wait_for_page_to_be_open()
        self.fill_first_name_field(fname)
        self.fill_last_name_field(lname)
        self.fill_email_field(email)
        self.fill_confirm_email_field(confemail)
        self.fill_password_field(password)
        self.click_marketing_opt()
        self.click_sign_up_button()
コード例 #16
0
class LoginPage:
    url = 'https://stag.dazn.com/en-DE/account/signin'

    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    # selectors
    cookie_button_css = "[data-test-id=\"cookie-disclaimer-button\"]"

    email_field_css_selector = '#email--1'
    email_field_empty_error_css = "[data-test-id=\"error-message-EMAIL-is-not-empty\"]"
    email_field_valid_error_css = "[data-test-id=\"error-message-EMAIL-is-email\"]"

    password_field_css_selector = '#password--2'
    password_field_old_length_error_css = "[data-test-id=\"error-message-PASSWORD-invalid-old-password-lenght\"]"

    login_button_css_selector = "[data-test-id=\"signIn__BUTTON\"]"
    # jesli dane sa niepoprawne button jest dissabled - disabled="", jesli sa poprawne, ta klasa znika

    show_password_css = "[data-test-id=\"SHOW_PASSWORD\"]"
    # jak zwalidowac czy password jest ukryty / zakryty - value jest caly czas takie samo

    forgot_email_link_css = "div.markdown___content___2AOZ5:nth-child(1) > p:nth-child(1) > a:nth-child(1)"
    forgot_password_link_css = "div.markdown___content___2AOZ5:nth-child(1) > p:nth-child(1) > a:nth-child(2)"
    sign_up_link_css = "div.markdown___content___2AOZ5:nth-child(2) > p:nth-child(1) > a:nth-child(1)"

    language_switcher_en_css = "[data-test-id=\"language-switcher-en\"]"

    #actions

    def cookie_button_click(self):
        self.driver.find_element_by_css_selector(
            self.cookie_button_css).click()

    def fill_email_field(self, text):
        email_field = self.driver.find_element_by_css_selector(
            self.email_field_css_selector)
        email_field.clear()
        email_field.send_keys(text)

    def fill_password_field(self, text):
        password_field = self.driver.find_element_by_css_selector(
            self.password_field_css_selector)
        password_field.clear()
        password_field.send_keys(text)

    def click_login_button(self):
        self.driver.find_element_by_css_selector(
            self.login_button_css_selector).click()

    def password_link_click(self):
        self.driver.find_element_by_css_selector(
            self.forgot_email_link_css).click()

    def forgot_email_link_click(self):
        self.driver.find_element_by_css_selector(
            self.forgot_password_link_css).click()

    def sign_up_lick_click(self):
        self.driver.find_element_by_css_selector(self.sign_up_link_css).click()

    def language_switcher_en_click(self):
        self.driver.find_element_by_css_selector(
            self.language_switcher_en_css).click()

    def language_switcher_regional_click(self, region):
        language_switcher_regional_css = f"[data-test-id=\"language-switcher-{region}\"]"
        switch = self.driver.find_element_by_css_selector(
            language_switcher_regional_css)
        switch.click()

    # def language_switcher_region(self, region):
    #     language_switcher_regional_css = f"[data-test-id=\"language-switcher-{region}\"]"
    #     return language_switcher_regional_css
    #
    # def language_switcher_regional_click(self):
    #     switch = self.driver.find_element_by_css_selector(self.language_switcher_regional_css)
    #     switch.click()

    def wait_for_page_to_be_open(self):
        self.lib.wait_for_element(self.email_field_css_selector,
                                  By.CSS_SELECTOR)

    #functions

    def login(self, email, password):
        self.wait_for_page_to_be_open()
        self.cookie_button_click()
        self.fill_email_field(email)
        self.fill_password_field(password)
        self.click_login_button()

    def switch_region(self, region_code):
        self.wait_for_page_to_be_open()
        self.cookie_button_click()
        # self.language_switcher_region(region_code)
        self.language_switcher_regional_click(region_code)
コード例 #17
0
ファイル: squads_page.py プロジェクト: xpdazn/mentoring
class SquadsPage:

    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    page_title_css = "[data-test-id=\"SPORTSDATA_PAGE_TITLE\"]"
    player_container_css = ".card___1nzvh"
    goalkeepers_container_css = "[data-test-id=\"PLAYERS-GOALKEEPERS\"]"
    defenders_container_css = "[data-test-id=\"PLAYERS-DEFENCE\"]"
    midfielders_container_css = "[data-test-id=\"PLAYERS-MIDFIELD\"]"
    forwards_container_css = "[data-test-id=\"PLAYERS-FORWARDS\"]"

    player_first_name_css = "[data-test-id=\"FIRSTNAME\"]"
    player_last_name_css = "[data-test-id=\"LASTNAME\"]"
    player_age_css = "[data-test-id=\"age-value\"]"
    player_height_css = "[data-test-id=\"height-value\"]"
    player_foot_css = "[data-test-id=\"foot-value\"]"
    player_nationality_css = "[data-test-id=\"nationality-value\"]"

    player_photo_css = ".details___2auMB > :first-child > :first-child"

    def get_players_metadata(self):
        players_dict = {}
        team_name = self.driver.find_element_by_css_selector(self.page_title_css).get_attribute("innerHTML")

        all_goalkeepers_container = self.driver.find_element_by_css_selector(self.goalkeepers_container_css)
        all_goalkeepers_data = all_goalkeepers_container.find_elements_by_css_selector(self.player_container_css)

        all_defenders_container = self.driver.find_element_by_css_selector(self.defenders_container_css)
        all_defenders_data = all_defenders_container.find_elements_by_css_selector(self.player_container_css)

        all_midfielders_container = self.driver.find_element_by_css_selector(self.midfielders_container_css)
        all_midfielders_data = all_midfielders_container.find_elements_by_css_selector(self.player_container_css)

        all_forwards_container = self.driver.find_element_by_css_selector(self.forwards_container_css)
        all_forwards_data = all_forwards_container.find_elements_by_css_selector(self.player_container_css)

        for goalkeeper in all_goalkeepers_data:
            try:
                player_first_name = goalkeeper.find_element_by_css_selector(self.player_first_name_css).get_attribute("innerHTML")
            except NoSuchElementException:
                player_first_name = ""
            try:
                player_last_name = goalkeeper.find_element_by_css_selector(self.player_last_name_css).get_attribute("innerHTML")
            except NoSuchElementException:
                player_last_name = ""
            player_age = goalkeeper.find_element_by_css_selector(self.player_age_css).get_attribute("innerHTML")
            player_height = goalkeeper.find_element_by_css_selector(self.player_height_css).get_attribute("innerHTML")
            player_foot = goalkeeper.find_element_by_css_selector(self.player_foot_css).get_attribute("innerHTML")
            player_nationality = goalkeeper.find_element_by_css_selector(self.player_nationality_css).get_attribute("innerHTML")
            try:
                player_photo = goalkeeper.find_element_by_css_selector(self.player_photo_css).get_attribute("src")
            except NoSuchElementException:
                player_photo = ""

            players_dict[f"{player_first_name} {player_last_name}"] = [int(player_age), player_height, player_foot, player_nationality, player_photo]

        for defender in all_defenders_data:
            try:
                player_first_name = defender.find_element_by_css_selector(self.player_first_name_css).get_attribute("innerHTML")
            except NoSuchElementException:
                player_first_name = ""
            try:
                player_last_name = defender.find_element_by_css_selector(self.player_last_name_css).get_attribute("innerHTML")
            except NoSuchElementException:
                player_last_name = ""
            player_age = defender.find_element_by_css_selector(self.player_age_css).get_attribute("innerHTML")
            player_height = defender.find_element_by_css_selector(self.player_height_css).get_attribute("innerHTML")
            player_foot = defender.find_element_by_css_selector(self.player_foot_css).get_attribute("innerHTML")
            player_nationality = defender.find_element_by_css_selector(self.player_nationality_css).get_attribute("innerHTML")
            try:
                player_photo = defender.find_element_by_css_selector(self.player_photo_css).get_attribute("src")
            except NoSuchElementException:
                player_photo = ""

            players_dict[f"{player_first_name} {player_last_name}"] = [int(player_age), player_height, player_foot, player_nationality, player_photo]

        for midfielder in all_midfielders_data:
            try:
                player_first_name = midfielder.find_element_by_css_selector(self.player_first_name_css).get_attribute("innerHTML")
            except NoSuchElementException:
                player_first_name = ""
            try:
                player_last_name = midfielder.find_element_by_css_selector(self.player_last_name_css).get_attribute("innerHTML")
            except NoSuchElementException:
                player_last_name = ""
            player_age = midfielder.find_element_by_css_selector(self.player_age_css).get_attribute("innerHTML")
            player_height = midfielder.find_element_by_css_selector(self.player_height_css).get_attribute("innerHTML")
            player_foot = midfielder.find_element_by_css_selector(self.player_foot_css).get_attribute("innerHTML")
            player_nationality = midfielder.find_element_by_css_selector(self.player_nationality_css).get_attribute("innerHTML")
            try:
                player_photo = midfielder.find_element_by_css_selector(self.player_photo_css).get_attribute("src")
            except NoSuchElementException:
                player_photo = ""

            players_dict[f"{player_first_name} {player_last_name}"] = [int(player_age), player_height, player_foot, player_nationality, player_photo]

        for forward in all_forwards_data:
            try:
                player_first_name = forward.find_element_by_css_selector(self.player_first_name_css).get_attribute("innerHTML")
            except NoSuchElementException:
                player_first_name = ""
            try:
                player_last_name = forward.find_element_by_css_selector(self.player_last_name_css).get_attribute("innerHTML")
            except NoSuchElementException:
                player_last_name = ""
            player_age = forward.find_element_by_css_selector(self.player_age_css).get_attribute("innerHTML")
            player_height = forward.find_element_by_css_selector(self.player_height_css).get_attribute("innerHTML")
            player_foot = forward.find_element_by_css_selector(self.player_foot_css).get_attribute("innerHTML")
            player_nationality = forward.find_element_by_css_selector(self.player_nationality_css).get_attribute("innerHTML")
            try:
                player_photo = forward.find_element_by_css_selector(self.player_photo_css).get_attribute("src")
            except NoSuchElementException:
                player_photo = ""

            players_dict[f"{player_first_name} {player_last_name}"] = [int(player_age), player_height, player_foot, player_nationality, player_photo]

        # print(players_dict)

        data = pd.DataFrame.from_dict(players_dict, orient='index')
        # transpose_data = data.transpose()
        # data.to_excel(f"{team_name}.xlsx", sheet_name=f'{team_name}',
        #               header= ["Age", "Height", "Foot", "Nationality", "Photo URL"],
        #               index_label="Name")
        return data


    def wait_for_page_to_be_open(self):
        self.lib.wait_for_element(self.page_title_css, By.CSS_SELECTOR)
コード例 #18
0
ファイル: schedule_page.py プロジェクト: xpdazn/mentoring
class SchedulePage:
    def __init__(self, driver):
        self.driver = driver
        self.lib = Lib(driver)

    filter_sport_css = "[data-test-id=\"SPORTFILTER_BUTTON\"]"
    every_sport_item_css = "[data-test-id=\"SPORT_FILTER_ITEM\"]"
    reset_sport_filter_css = "[data-test-id=\"RESET_SPORT_FILTERS\"]"
    sports_filter_count_css = "[data-test-id=\"SPORT_FILTER_COUNT\"]"
    # sporty po xpathie

    today_date_tile_css = "[data-test-id=\"DATETILE_TILE DATETILE_TODAY\"]"

    any_date_tile_css = "[data-test-id=\"DATETILE_TILE\"]"

    date_scroller_forward_arrow_css = "[data-test-id=\"DATE_SCROLLER_FORWARD_ARROW\"]"
    date_scroller_back_arrow_css = "[data-test-id=\"DATE_SCROLLER_BACK_ARROW\"]"

    dates_container_css = ".date-scroller___date-scroller___2luAU > div:nth-child(1) > div:nth-child(1) > *"
    first_date_css = "div.date-tile___date-tile___2wXId:nth-child(1)"
    last_date_css = "div.date-tile___date-tile___2wXId:last-child"

    # div, li, roznice
    # problem ze zbudowaniem listy i znalezieniem ostatniego elementu tej listy

    def date_scroller_forward_click(self):
        date_scroller_forward = self.driver.find_element_by_css_selector(
            self.date_scroller_forward_arrow_css)
        date_scroller_forward.click()

    def date_scroller_back_click(self):
        date_scroller_back = self.driver.find_element_by_css_selector(
            self.date_scroller_back_arrow_css)
        date_scroller_back.click()

    def today_date_tile_click(self):
        today_date = self.driver.find_element_by_css_selector(
            self.today_date_tile_css)
        today_date.click()

    # def max_future_date_tile_click(self):
    #     all_dates_list = self.driver.find_elements_by_css_selector(self.dates_container_css)
    #     max_future_date_tile = all_dates_list[0].find_element_by_css_selector(self.any_date_tile_css)
    #     max_future_date_tile.click()
    #
    # def max_past_date_tile_click(self):
    #     all_dates_list = self.driver.find_elements_by_css_selector(self.dates_container_css)
    #     max_past_date_tile = all_dates_list[-1].find_element_by_css_selector(self.any_date_tile_css)
    #     max_past_date_tile.click()

    def max_future_date_tile_click(self):
        max_future_date_tile = self.driver.find_element_by_css_selector(
            self.last_date_css)
        max_future_date_tile.click()

    def max_past_date_tile_click(self):
        max_past_date_tile = self.driver.find_element_by_css_selector(
            self.first_date_css)
        max_past_date_tile.click()

    # czy mozna to uproscic, wyczyscic, jest funkcja w funkcji
    def make_max_future_date_visible(self):
        while not self.driver.find_element_by_css_selector(
                self.last_date_css).is_displayed():
            self.date_scroller_forward_click()
            time.sleep(1)

    def make_max_past_date_visible(self):
        while not self.driver.find_element_by_css_selector(
                self.first_date_css).is_displayed():
            self.date_scroller_back_click()
            time.sleep(1)

    # jak uniezaleznic to od strony od ktorej zaczynamy / past / forward
    def make_today_date_visible(self):
        while not self.driver.find_element_by_css_selector(
                self.today_date_tile_css).is_displayed():
            self.date_scroller_back_click()
            time.sleep(1)

    def wait_for_page_to_be_open(self):
        self.lib.wait_for_element(self.filter_sport_css, By.CSS_SELECTOR)