pages/desktop/reviewer_tools/moderated_review_log.py (53 lines of code) (raw):
from selenium.webdriver.common.by import By
from pages.desktop.base import Base
from pages.desktop.reviewer_tools.log_details import LogDetails
from selenium.webdriver.support import expected_conditions as EC
from scripts import reusables
from selenium.webdriver.support.select import Select
class ModeratedReviewLog(Base):
URL_TEMPLATE = "reviewers/moderationlog"
_moderated_review_log_text_locator = (By.XPATH, "//h2[contains(text(),'Moderated Review Log')]")
_table_date_column_locator = (By.XPATH, "//table[@class='data-grid']//th[contains(text(),'Date')]")
_table_event_column_locator = (By.XPATH, "//table[@class='data-grid']//th[contains(text(),'Event')]")
_select_filter_type_locator = (By.CSS_SELECTOR, "select#id_filter")
_filter_button_locator = (By.XPATH, "//button[@type='submit']")
_more_details_list_locator = (By.XPATH, "//a[@class='more-details']")
# Interaction Methods -----------------------------------------------------------------------
@property
def moderated_review_log_text(self):
return self.find_element(*self._moderated_review_log_text_locator)
@property
def table_date_column(self):
return self.find_element(*self._table_date_column_locator)
@property
def table_event_column(self):
return self.find_element(*self._table_event_column_locator)
@property
def select_filter_type(self):
return self.find_element(*self._select_filter_type_locator)
@property
def filter_button(self):
return self.find_element(*self._filter_button_locator)
@property
def more_details_list(self):
return self.find_element(*self._more_details_list_locator)
# Click methods -------------------------------------------------------------
def click_more_details_link(self):
self.find_element(*self._more_details_list_locator).click()
return LogDetails(self.driver, self.base_url).wait_for_page_to_load()
def moderated_action_picker(self, value):
self.wait.until(EC.visibility_of_element_located(self._select_filter_type_locator))
select = Select(self.find_element(*self._select_filter_type_locator))
select.select_by_visible_text(value)
# Assert Method ---------------------------------------------------------------------------
def assert_moderated_review_log_page_elements(self):
assert self.moderated_review_log_text.is_displayed(), "Moderated review log text is not displayed"
assert self.table_date_column.is_displayed(), "Table date column is not displayed"
assert self.table_event_column.is_displayed(), "Table event column is not displayed"
assert self.select_filter_type.is_displayed(), "Select filter type is not displayed"
assert self.filter_button.is_displayed(), "Filter button is not displayed"
assert self.more_details_list.is_displayed(), "More details list is not displayed"
def wait_for_page_to_load(self):
self.wait.until(
lambda _: self.find_element(*self._moderated_review_log_text_locator).is_displayed(),
message="Moderated Review Log was not loaded",
)
assert "Moderated Review Log" in self.moderated_review_log_text.text
return self