regions/desktop/categories.py (29 lines of code) (raw):
from pypom import Region
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
class Categories(Region):
_root_locator = (By.CLASS_NAME, 'Categories')
_categories_card_header_locator = (By.CSS_SELECTOR, '.Categories .Card-header')
_categories_locator = (By.CLASS_NAME, 'Categories-item')
def wait_for_categories_to_load(self):
self.wait.until(lambda _: self.is_element_displayed(*self._categories_locator))
return self
@property
def categories_list_header(self):
self.wait.until(EC.visibility_of_element_located(self._categories_card_header_locator))
return self.find_element(*self._categories_card_header_locator)
@property
def category_list(self):
self.wait.until(EC.visibility_of_element_located(self._categories_locator))
items = self.find_elements(*self._categories_locator)
return [self.CategoryList(self, el) for el in items]
class CategoryList(Region):
_name_locator = (By.CLASS_NAME, 'Categories-link')
@property
def category_button_name(self):
self.wait.until(EC.visibility_of_element_located(self._name_locator))
return self.find_element(*self._name_locator).text
def click(self):
self.root.click()
from pages.desktop.frontend.search import Search
return Search(self.driver, self.page)