modules/page_object_addons_mozilla_org.py (28 lines of code) (raw):
from selenium.webdriver.common.by import By
from modules.page_base import BasePage
# PLEASE add all AMO page models to this file
class AmoThemes(BasePage):
"""
POM for AMO Themes
"""
URL_TEMPLATE = "https://addons.mozilla.org/en-US/firefox/themes"
def install_recommended_theme(self) -> BasePage:
"""
Install the first recommended theme.
"""
self.get_element("recommended-addon").click()
self.theme_title = self.get_element("theme-title").get_attribute("innerText")
self.get_element("install-button").click()
# TODO: Add toolbar browser object
with self.driver.context(self.driver.CONTEXT_CHROME):
self.driver.find_element(By.CSS_SELECTOR, "button[label='Add']").click()
self.driver.find_element(By.CSS_SELECTOR, "button[label='OK']").click()
return self
class AmoLanguages(BasePage):
"""
POM for AMO Languages
"""
URL_TEMPLATE = "https://addons.mozilla.org/en-US/firefox/language-tools/"
def wait_for_language_page_to_load(self) -> BasePage:
"""
Waits until the language page is loaded
"""
self.custom_wait(timeout=20).until(
lambda _: self.get_element("language-addons-title") is not None
)
return self
def find_language_row_and_navigate(self, language_label: str) -> BasePage:
"""
Finds the row that corresponds with the language_label and clicks into it
"""
language_row = self.get_element("language-addons-row", labels=[language_label])
self.get_element(
"language-addons-row-link", parent_element=language_row
).click()
# ensuring the subpage of the language is loaded
self.custom_wait(timeout=20).until(
lambda _: self.get_element("language-addons-subpage-header") is not None
)
return self