77 lines
2.6 KiB
Python
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)
|
|
)
|