class HomepageActions: def __init__(self, app): self.app = app self.driver = app.driver self.hp_actions = Homepage(driver=self.driver) @allure.step('Expand main menu') def expand_main_menu(self): LOGGER.info("Expand main menu") driver = self.app.driver driver.implicitly_wait(180) menu_hover = self.hp_actions.catalog_header actions = ActionChains(driver) actions.move_to_element(menu_hover).perform() wait(lambda: self.hp_actions.is_element_present("computers_label"), timeout_seconds=20.0) @allure.step('Expand 2nd level menu') def expand_computers_menu(self): LOGGER.info("Expand computers menu") driver = self.app.driver driver.implicitly_wait(180) menu_hover = self.hp_actions.computers_label actions = ActionChains(driver) actions.move_to_element(menu_hover).perform() wait(lambda: self.hp_actions.is_element_present( "laptops_accessories_label"), timeout_seconds=20.0) @allure.step('Expand 3rd level menu') def expand_laptops_menu(self): LOGGER.info("Expand computers menu") driver = self.app.driver driver.implicitly_wait(180) menu_hover = self.hp_actions.laptops_accessories_label actions = ActionChains(driver) actions.move_to_element(menu_hover).perform() wait(lambda: self.hp_actions.is_element_present("laptops_label"), timeout_seconds=20.0) @allure.step('Click laptops label') def click_laptops(self): LOGGER.info("Click 'Ноутбуки' menu item") driver = self.app.driver driver.implicitly_wait(10) actions = ActionChains(driver) laptops_label = self.hp_actions.laptops_label actions.move_to_element(laptops_label).perform() laptops_label.click()