pages/desktop/reviewer_tools/ratings_awaiting_moderation.py (59 lines of code) (raw):

from selenium.webdriver.support import expected_conditions as EC from pages.desktop.base import Base from selenium.webdriver.common.by import By class RatingsAwaitingModeration(Base): URL_TEMPLATE = '/reviewers/queue/reviews' # Locators ------------------------------------------------- _page_locator = (By.XPATH, "//li[@class='selected']//a[contains(text(),'Rating Reviews')]") _moderation_actions_keep_review_locator = (By.XPATH, "//label[contains(text(),'Keep review; remove flags')]") _moderation_actions_skip_for_now_locator = (By.XPATH, "//label[contains(text(),'Skip for now')]") _moderation_actions_delete_review_locator = (By.XPATH, "//label[contains(text(),'Delete review')]") _review_locator = (By.CSS_SELECTOR, "div.review-flagged") _process_reviews_top_locator = (By.XPATH, "//div[@class='review-saved']//button") _process_reviews_bottom_locator = (By.XPATH, "//div[@class='review-saved review-flagged']//button") # Interaction methods @property def page(self): return self.find_element(*self._page_locator) @property def moderation_actions_keep_review(self): return self.find_element(*self._moderation_actions_keep_review_locator) @property def moderation_actions_skip_for_now(self): return self.find_element(*self._moderation_actions_skip_for_now_locator) @property def moderation_actions_delete_review(self): return self.find_element(*self._moderation_actions_delete_review_locator) @property def review(self): return self.find_element(*self._review_locator) @property def process_reviews_top(self): return self.find_element(*self._process_reviews_top_locator) @property def process_reviews_bottom(self): return self.find_element(*self._process_reviews_bottom_locator) # Assert methods -------------------------------------------------------------- def assert_process_reviews_buttons(self): self.wait.until( EC.element_to_be_clickable(self._process_reviews_top_locator) ) self.wait.until( EC.element_to_be_clickable(self._process_reviews_bottom_locator) ) assert 'Process Reviews' in self.process_reviews_top.text assert 'Process Reviews' in self.process_reviews_bottom.text def assert_moderation_actions_section_elements(self): assert self.moderation_actions_keep_review.is_displayed(), \ "Moderation action 'Keep review' is not displayed" assert 'Keep review' in self.moderation_actions_keep_review.text assert self.moderation_actions_skip_for_now.is_displayed(), \ "Moderation action 'Skip for now' is not displayed" assert 'Skip for now' in self.moderation_actions_skip_for_now.text assert self.moderation_actions_delete_review.is_displayed(), \ "Moderation action 'Delete review' is not displayed" assert 'Delete review' in self.moderation_actions_delete_review.text def wait_for_page_to_load(self): self.wait.until( lambda _: self.find_element(*self._page_locator).is_displayed(), message="Ratings Awaiting Moderation was not loaded", ) assert "Rating Reviews" in self.page.text return self