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
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)
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()
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)
class MultipleSignUpTest(unittest.TestCase): driver = None browser = "Chrome" lib = None lp = None rp_page = None su_page = None nu_payment_page = None fallback_page = None confirmation_page = None home_page = None test_failed = True def test_multiple_sign_up(self): email_list = [] for i in range(2): self.driver = select_driver(self.browser) self.driver.set_window_size(1000, 1600) self.lib = Lib(self.driver) self.lp = LoginPage(self.driver) self.rp_page = RatePlansPage(self.driver) self.driver.get(self.rp_page.url) self.driver.execute_script( "window.localStorage.setItem('Auth_2_PSD2', true)") self.su_page = SignUpPage(self.driver) self.nu_payment_page = PaymentPage(self.driver) self.fallback_page = FallbackPage(self.driver) self.confirmation_page = ConfirmationPage(self.driver) self.home_page = HomePageTopBar(self.driver) uid = time.strftime("%H%M%S") email = f"xpdazn+3ds1{uid}@gmail.com" cc_name = choice(list(cc_type)) self.rp_page.wait_for_page_to_be_open() self.lp.cookie_button_click() self.rp_page.monthly_plan_click() self.su_page.fill_sign_up_user_details("Fraud", "fraud", email, email, "12345a") self.nu_payment_page.pds2_credit_card_payment_method_flow( cc_type[cc_name]) self.fallback_page.complete_fallback_scenario("user", "password") self.confirmation_page.wait_for_page_to_be_open() correlation_id = self.lib.get_correlation_id() self.confirmation_page.confirmation_button_click() email_list.append( [email, cc_type[cc_name][0], cc_name, correlation_id]) print(email, cc_type[cc_name][0], cc_name, correlation_id) self.driver.close() time.sleep(10) self.lib.dataframe_to_excel_psd2(pd.DataFrame(email_list), "3DS1 Spain 04.12") self.test_failed = False if __name__ == "__main__": unittest.main()
def setUp(self): self.driver = select_driver(self.browser) self.driver.set_window_size(1000, 1600) self.lib = Lib(self.driver) self.lp = LoginPage(self.driver) self.driver.get(self.lp.url) self.home_page = HomePageTopBar(self.driver) self.sports_dropdown = SportsDropdown(self.driver) self.home_page_tiles = HomePageTiles(self.driver) self.sport_page = SportPageTiles(self.driver) self.competition_page = CompetitionsPageTiles(self.driver) self.competitor_page = CompetitorPageTiles(self.driver) self.squads = SquadsPage(self.driver) self.test_failed = True
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)
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)
def setUp(self): self.driver = select_driver(self.browser) self.driver.set_window_size(1000, 1600) self.lib = Lib(self.driver) self.lp = LoginPage(self.driver) self.rp_page = RatePlansPage(self.driver) self.driver.get(self.rp_page.url) self.driver.execute_script( "window.localStorage.setItem('Auth_2_PSD2', true)") self.su_page = SignUpPage(self.driver) self.nu_payment_page = PaymentPage(self.driver) self.fallback_page = FallbackPage(self.driver) self.confirmation_page = ConfirmationPage(self.driver) self.home_page = HomePageTopBar(self.driver) self.test_failed = True
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)
def setUp(self): self.driver = select_driver(self.browser) self.driver.set_window_size(1000, 1600) self.lib = Lib(self.driver) self.lp = LoginPage(self.driver) self.driver.get(self.lp.url) self.home_page = HomePageTopBar(self.driver) self.test_failed = True
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)
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()
def setUp(self): self.driver = select_driver(self.browser) self.driver.set_window_size(1000, 1600) self.lib = Lib(self.driver) self.su_page = SignUpPageMassive(self.driver) self.driver.get(self.su_page.url) self.nu_payment_page = PaymentPageMassive(self.driver) self.confirmation_page = ConfirmationPageMassive(self.driver) self.home_page = HomePageTopBar(self.driver) self.test_failed = True
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)
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)
def __init__(self, driver): self.driver = driver self.lib = Lib(driver)
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()
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)
class SquadsTest(unittest.TestCase): driver = None browser = "Chrome" lib = None lp = None home_page = None sports_dropdown = None home_page_tiles = None sport_page = None competition_page = None competitor_page = None squads = None test_failed = True def setUp(self): self.driver = select_driver(self.browser) self.driver.set_window_size(1000, 1600) self.lib = Lib(self.driver) self.lp = LoginPage(self.driver) self.driver.get(self.lp.url) self.home_page = HomePageTopBar(self.driver) self.sports_dropdown = SportsDropdown(self.driver) self.home_page_tiles = HomePageTiles(self.driver) self.sport_page = SportPageTiles(self.driver) self.competition_page = CompetitionsPageTiles(self.driver) self.competitor_page = CompetitorPageTiles(self.driver) self.squads = SquadsPage(self.driver) self.test_failed = True def tearDown(self): test_name = unittest.TestCase.id(self) if self.test_failed: self.driver.save_screenshot(f"../Error_screens/{test_name}.png") self.driver.close() def test_get_players_data_from_one_club(self): sport = "Football" league = "Bundesliga" team = "FC Bayern München" self.lp.login('*****@*****.**', '12345') self.home_page.wait_for_page_to_be_open() self.sports_dropdown.click_sports_button() self.sports_dropdown.wait_for_sport_drop_down() self.home_page_tiles.wait_for_tiles_to_load() self.sports_dropdown.select_sport_by_name(sport) self.sport_page.wait_for_tiles_to_load() self.sport_page.go_to_competition_page(league) self.competition_page.wait_for_tiles_to_load() self.competition_page.go_to_competitor_page(team) self.competitor_page.wait_for_page_to_load() self.competitor_page.click_squad() self.squads.wait_for_page_to_be_open() data = self.squads.get_players_metadata() self.lib.dataframes_to_excel_to_separate_sheets([data], [team], team) self.test_failed = False def test_get_players_data_from_one_league(self): sport = "Football" league = "LaLiga Santander" self.lp.login('*****@*****.**', '12345') self.home_page.wait_for_page_to_be_open() self.sports_dropdown.click_sports_button() self.sports_dropdown.wait_for_sport_drop_down() self.home_page_tiles.wait_for_tiles_to_load() self.sports_dropdown.select_sport_by_name(sport) self.sport_page.wait_for_tiles_to_load() self.sport_page.go_to_competition_page(league) self.competition_page.wait_for_tiles_to_load() time.sleep(6) all_competitors = self.competition_page.capture_competitors_names() competitors_data_frames_collection = [] for team in all_competitors: print(team.index, team) self.sports_dropdown.click_sports_button() self.sports_dropdown.wait_for_sport_drop_down() self.home_page_tiles.wait_for_tiles_to_load() self.sports_dropdown.select_sport_by_name(sport) self.sport_page.wait_for_tiles_to_load() self.sport_page.go_to_competition_page(league) self.competition_page.wait_for_tiles_to_load() self.competition_page.go_to_competitor_page(team) self.competitor_page.wait_for_page_to_load() self.competitor_page.click_squad() self.squads.wait_for_page_to_be_open() competitors_data_frames_collection.append( self.squads.get_players_metadata()) self.lib.dataframes_to_excel_to_separate_sheets( competitors_data_frames_collection, all_competitors, league) self.test_failed = False if __name__ == "__main__": unittest.main()
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()
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)
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()
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)
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()
class SignUpTest(unittest.TestCase): driver = None browser = "Chrome" lib = None lp = None rp_page = None su_page = None nu_payment_page = None fallback_page = None confirmation_page = None home_page = None test_failed = True def setUp(self): self.driver = select_driver(self.browser) self.driver.set_window_size(1000, 1600) self.lib = Lib(self.driver) self.lp = LoginPage(self.driver) self.rp_page = RatePlansPage(self.driver) self.driver.get(self.rp_page.url) self.driver.execute_script( "window.localStorage.setItem('Auth_2_PSD2', true)") self.su_page = SignUpPage(self.driver) self.nu_payment_page = PaymentPage(self.driver) self.fallback_page = FallbackPage(self.driver) self.confirmation_page = ConfirmationPage(self.driver) self.home_page = HomePageTopBar(self.driver) self.test_failed = True def tearDown(self): test_name = unittest.TestCase.id(self) if self.test_failed: self.driver.save_screenshot(f"../Error_screens/{test_name}.png") self.driver.close() def test_sign_up(self): uid = time.strftime("%H%M%S") email = f"xpdazn+brfe{uid}@gmail.com" cc_name = choice(list(cc_type)) print(email, cc_type[cc_name][0], cc_name) self.rp_page.wait_for_page_to_be_open() self.lp.cookie_button_click() # self.driver.execute_script("window.localStorage.setItem('Auth_2_PSD2', true)") self.rp_page.monthly_plan_click() self.su_page.fill_sign_up_user_details("Fraud", "fraud", email, email, "12345a") self.nu_payment_page.pds2_credit_card_payment_method_flow( cc_type[cc_name]) self.fallback_page.complete_fallback_scenario("user", "password") self.lib.get_correlation_id() time.sleep(5) self.confirmation_page.wait_for_page_to_be_open() self.lib.get_correlation_id() time.sleep(5) self.confirmation_page.confirmation_button_click() time.sleep(3) self.test_failed = False if __name__ == "__main__": unittest.main()