TIF_NGANJUK_E41222052/pages/materi_readwrite_page.py

77 lines
2.6 KiB
Python

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class MateriReadWritePage:
# ===== Locator =====
PAGE_TITLE = (By.XPATH, "//h4[normalize-space()='Materi Read / Write']")
TEXT_MATERI = (By.XPATH, "//strong[text()='Teks:']/following-sibling::pre")
RANGKUMAN_TEXTAREA = (By.ID, "rangkuman")
SUBMIT_BUTTON = (By.XPATH, "//button[normalize-space()='Kirim Rangkuman']")
SUCCESS_ALERT = (By.XPATH, "//div[contains(@class,'alert-success')]")
TUGAS_RANGKUMAN_LABEL = (By.XPATH,"//label[@for='rangkuman']//strong[normalize-space()='Tugas Rangkuman:']")
# Sidebar navigasi materi lain
SIDEBAR_VISUAL = (
By.XPATH,
"//div[@id='learningStyleSidebar']//h6[normalize-space()='Visual']/following-sibling::a"
)
SIDEBAR_AUDITORY = (
By.XPATH,
"//div[@id='learningStyleSidebar']//h6[normalize-space()='Auditory']/following-sibling::a"
)
SIDEBAR_KINESTHETIC = (
By.XPATH,
"//div[@id='learningStyleSidebar']//h6[normalize-space()='Kinesthetic']/following-sibling::a"
)
ERROR_ALERT = (By.XPATH, "//div[contains(@class,'alert-danger')]")
def __init__(self, driver):
self.driver = driver
self.wait = WebDriverWait(driver, 10)
# ===== Actions =====
def page_loaded(self):
self.wait.until(EC.visibility_of_element_located(self.PAGE_TITLE))
def get_text_materi(self):
return self.wait.until(
EC.visibility_of_element_located(self.TEXT_MATERI)
).text
def input_rangkuman(self, text):
textarea = self.wait.until(
EC.visibility_of_element_located(self.RANGKUMAN_TEXTAREA)
)
textarea.clear()
textarea.send_keys(text)
def submit_rangkuman(self):
self.wait.until(
EC.element_to_be_clickable(self.SUBMIT_BUTTON)
).click()
def success_message_displayed(self):
return self.wait.until(
EC.visibility_of_element_located(self.SUCCESS_ALERT)
)
# ===== Sidebar navigation =====
def go_to_visual(self):
self.wait.until(EC.element_to_be_clickable(self.SIDEBAR_VISUAL)).click()
def go_to_auditory(self):
self.wait.until(EC.element_to_be_clickable(self.SIDEBAR_AUDITORY)).click()
def go_to_kinesthetic(self):
self.wait.until(EC.element_to_be_clickable(self.SIDEBAR_KINESTHETIC)).click()
def error_message_displayed(self):
return self.wait.until(
EC.visibility_of_element_located(self.ERROR_ALERT)
)