modules/page_object_google.py (52 lines of code) (raw):

from selenium.webdriver.common.keys import Keys from selenium.webdriver.remote.webelement import WebElement from modules.page_base import BasePage from modules.page_object import GenericPage class GoogleSearch(BasePage): """ Page Object Model for the google.com page """ URL_TEMPLATE = "https://www.google.com/" def type_in_search_bar(self, text: str) -> BasePage: """ Sends text into the search bar """ search_bar = self.get_search_bar_element() search_bar.send_keys(text) def press_enter_search_bar(self) -> BasePage: """ Sends Enter into the search bar """ search_bar = self.get_search_bar_element() search_bar.send_keys(Keys.ENTER) def get_search_bar_element(self) -> WebElement: """ Finds the search bar element and returns it as a WebElement """ return self.get_element("search-bar-textarea") class GoogleSheets(GenericPage): """ Page Object Model for the docs.google.com/spreadsheets page """ def open_insert_menu(self) -> GenericPage: """Open the insert menu""" self.click_on("insert-button") return self def select_num_rows(self, n: int) -> GenericPage: """Select n rows starting from the current position""" self.actions.key_down(Keys.SHIFT) self.actions.send_keys(Keys.SPACE) for _ in range(n - 1): self.actions.send_keys(Keys.ARROW_DOWN) self.actions.key_up(Keys.SHIFT).perform() return self def select_num_columns(self, n: int) -> GenericPage: """Select n columns starting from the current position""" self.actions.key_down(Keys.CONTROL) self.actions.send_keys(Keys.SPACE) self.actions.key_up(Keys.CONTROL).perform() self.actions.key_down(Keys.SHIFT) for _ in range(n - 1): self.actions.send_keys(Keys.RIGHT) self.actions.key_up(Keys.SHIFT).perform() return self def select_entire_table(self) -> GenericPage: """Select the entire table starting from the current position""" mod_key = Keys.COMMAND if self.sys_platform else Keys.CONTROL self.actions.key_down(mod_key) self.actions.key_down(Keys.SHIFT) self.actions.send_keys(Keys.SPACE) self.actions.key_up(Keys.SHIFT) self.actions.key_up(mod_key).perform() return self def go_to_top_left_cell(self) -> GenericPage: """Select cell A1 (top left)""" if self.sys_platform == "Darwin": self.actions.key_down(Keys.COMMAND) self.actions.send_keys(Keys.LEFT) self.actions.send_keys(Keys.UP) self.actions.send_keys(Keys.UP) else: self.actions.key_down(Keys.CONTROL) self.actions.send_keys(Keys.HOME) return self