modules/browser_object_reader_view.py (71 lines of code) (raw):

import logging from selenium.webdriver import Keys from selenium.webdriver.remote.webelement import WebElement from modules.page_base import BasePage class ReaderView(BasePage): """ BOM for reader view """ URL_TEMPLATE = "" def open_reader_view_searchbar(self) -> BasePage: """ Opens the reader view using the search bar """ before_page_source = self.driver.page_source with self.driver.context(self.driver.CONTEXT_CHROME): self.get_element("reader-view-button").click() self.wait.until(lambda _: self.driver.page_source != before_page_source) self.wait_for_reader_view_open() return self def open_reader_view_keys(self) -> BasePage: """ Opens the reader view using keys """ before_page_source = self.driver.page_source with self.driver.context(self.driver.CONTEXT_CHROME): if self.sys_platform() == "Darwin": self.perform_key_combo(Keys.COMMAND, Keys.ALT, "r") elif self.sys_platform() == "Linux": self.perform_key_combo(Keys.CONTROL, Keys.ALT, "r") else: self.perform_key_combo(Keys.F9) self.wait.until(lambda _: self.driver.page_source != before_page_source) self.wait_for_reader_view_open() return self def close_reader_view_searchbar(self) -> BasePage: """ Closes the reader view using the search bar """ before_page_source = self.driver.page_source with self.driver.context(self.driver.CONTEXT_CHROME): self.get_element("reader-view-button").click() self.wait.until(lambda _: self.driver.page_source != before_page_source) self.wait_for_reader_view_closed() return self def close_reader_view_keys(self) -> BasePage: """ Closes the reader view using keys """ before_page_source = self.driver.page_source with self.driver.context(self.driver.CONTEXT_CHROME): if self.sys_platform() == "Darwin": self.perform_key_combo(Keys.COMMAND, Keys.ALT, "r") elif self.sys_platform() == "Linux": self.perform_key_combo(Keys.CONTROL, Keys.ALT, "r") else: self.perform_key_combo(Keys.F9) self.wait.until(lambda _: self.driver.page_source != before_page_source) self.wait_for_reader_view_closed() return self def wait_for_reader_view_open(self) -> BasePage: """ Checks to see if the reader view toolbar is present demonstrating that the reader view is open. """ self.element_exists("reader-toolbar") return self def wait_for_reader_view_closed(self) -> BasePage: """ Checks to see if the reader view toolbar is not present, demonstrating that reader view is not open. """ self.element_does_not_exist("reader-toolbar") return self def click_toolbar_option(self, option: str) -> BasePage: """ Clicks on the toolbar option """ toolbar_option = self.get_element(option) self.element_clickable(option) toolbar_option.click() return self def open_advanced_options(self) -> BasePage: """ Assuming the type panel is already open, this method will press the advanced accordian """ self.get_element("toolbar-advanced").click() self.element_clickable("toolbar-text-align-left") return self def change_slider_value(self, slider: WebElement, increase=True) -> BasePage: """ Sends the Right and Left keys to the slider to move the selected point. """ if increase: slider.send_keys(Keys.RIGHT) else: slider.send_keys(Keys.LEFT) return self def change_slider_element_shadow_parent(self, slider_parent: str) -> BasePage: """ Dynamically modifies the shadow parent of the slider. """ if "slider" in self.elements: self.elements["slider"]["shadowParent"] = slider_parent return self logging.error("Could not find slider element.") return self