from allure import step from playwright.sync_api import Page, expect from src.helpers.logger import Logger from src.locators.track_page.performance_section.youtube_tab_locators import TrackPagePerformanceYoutubeLocators from src.locators.track_page.performance_section.youtube_video_window_locators import YoutubeVideoWindowLocators from src.pages.track_page.header.track_page_header import TrackPageHeader from src.ui_elements.dropdown_ui_element import DropDownUIElement log = Logger() tab_name = "Youtube Window - " class YoutubeWindow(TrackPageHeader): def __init__(self, page: Page): super().__init__(page) self.page = page self.choose_videos_link = DropDownUIElement(self.page, TrackPagePerformanceYoutubeLocators.CHOOSE_VIDEOS_LINK, tab_name + 'choose videos link') self.video_checkboxes = DropDownUIElement(self.page, YoutubeVideoWindowLocators.VIDEO_CHECKBOXES, tab_name + 'choose videos link') self.apply_button = DropDownUIElement(self.page, YoutubeVideoWindowLocators.APPLY_BUTTON, tab_name + 'apply button') @step(tab_name + "choose videos {item}") def choose_videos(self, item): self.choose_videos_link.click() self.video_checkboxes.exists_multiple() all_checkbox = self.video_checkboxes._element.first all_checkbox.click() if all_checkbox.get_attribute("data-checked") == "checked": all_checkbox.click() if item == "all": all_checkbox.click() else: for i in list(range(2, item+2)): self.video_checkboxes._element.nth(i).click() self.apply_button.click() self.video_checkboxes.not_exist() if item == "all": expect(self.choose_videos_link._element).to_have_text(f"All Videos") elif item > 1: expect(self.choose_videos_link._element).to_have_text(f"{item} Videos")