pages/desktop/developers/addons_manage.py (52 lines of code) (raw):

from pypom import Region from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from pages.desktop.base import Base from pages.desktop.developers.edit_addon import EditAddon class ManageAddons(Base): _my_addons_page_logo = (By.CSS_SELECTOR, ".site-titles") _page_title_locator = (By.CSS_SELECTOR, ".hero > h1") _my_themes_section_button_locator = ( By.CSS_SELECTOR, ".submission-type-tabs > a:nth-child(2)", ) _sort_by_created_locator = (By.LINK_TEXT, "Created") _addon_items_locator = (By.CLASS_NAME, "item.addon") _submit_addon_button_locator = (By.CSS_SELECTOR, "#submit-addon > a") def wait_for_page_to_load(self): self.wait.until( EC.visibility_of_element_located(self._submit_addon_button_locator) ) return self @property def my_addons_page_logo(self): self.wait_for_element_to_be_displayed(self._my_addons_page_logo) return self.find_element(*self._my_addons_page_logo) @property def my_addons_page_title(self): self.wait_for_element_to_be_displayed(self._page_title_locator) return self.find_element(*self._page_title_locator) def click_on_my_themes(self): self.find_element(*self._my_themes_section_button_locator).click() self.wait.until( lambda _: self.find_element( *self._my_themes_section_button_locator ).get_attribute("class") == "active" ) def sort_by_created(self): self.find_element(*self._sort_by_created_locator).click() @property def addon_list(self): items = self.find_elements(*self._addon_items_locator) return [self.AddonDetails(self, el) for el in items] class AddonDetails(Region): _addon_name_locator = (By.CSS_SELECTOR, ".item.addon .info > h3") _addon_edit_link_locator = (By.CSS_SELECTOR, ".item.addon .info > h3 > a") @property def name(self): self.wait.until(EC.visibility_of_element_located(self._addon_name_locator)) return self.find_element(*self._addon_name_locator).text def click_addon_name(self): self.find_element(*self._addon_edit_link_locator).click() return EditAddon(self.driver, self.page.base_url).wait_for_page_to_load()