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