170 lines
6.1 KiB
Python
170 lines
6.1 KiB
Python
from selenium import webdriver
|
|
from selenium.webdriver.common.by import By
|
|
from selenium.webdriver.chrome.service import Service
|
|
from webdriver_manager.chrome import ChromeDriverManager
|
|
from selenium.webdriver.support.ui import WebDriverWait
|
|
from selenium.webdriver.support import expected_conditions as EC
|
|
from selenium.webdriver.common.keys import Keys
|
|
import time
|
|
import sys
|
|
import os
|
|
|
|
try:
|
|
from login import login_to_cms
|
|
print("✅ Successfully imported login_to_cms from login.py")
|
|
except ImportError as e:
|
|
print(f"❌ Failed to import login_to_cms: {e}")
|
|
sys.exit(1)
|
|
|
|
def test_top_up():
|
|
driver = None
|
|
try:
|
|
driver = login_to_cms()
|
|
print("Logged in, proceeding to Top-Up test")
|
|
|
|
WebDriverWait(driver, 20).until(
|
|
EC.presence_of_element_located((By.CSS_SELECTOR, "li.ant-menu-item"))
|
|
)
|
|
print("Sidebar loaded")
|
|
|
|
# Click the "Top-Up" link in the sidebar
|
|
topup_link = WebDriverWait(driver, 10).until(
|
|
EC.element_to_be_clickable((By.XPATH, "//a[.//span[text()='Top-Up']]"))
|
|
)
|
|
topup_link.click()
|
|
print("✔️ Clicked on 'Top-Up' in sidebar")
|
|
time.sleep(2)
|
|
|
|
# Click View icon for one data
|
|
view_icon = WebDriverWait(driver, 10).until(
|
|
EC.element_to_be_clickable((By.XPATH, "//i[contains(@class, 'anticon-right-circle-o')]"))
|
|
)
|
|
view_icon.click()
|
|
print("✔️ Clicked on View icon of one data")
|
|
time.sleep(2)
|
|
|
|
# Click Update button
|
|
update_btn = WebDriverWait(driver, 10).until(
|
|
EC.element_to_be_clickable((By.XPATH, "//button[.//span[text()='Update']]"))
|
|
)
|
|
update_btn.click()
|
|
print("✔️ Clicked Update button")
|
|
time.sleep(2)
|
|
|
|
# Add a value: First clear any existing value, then input 10
|
|
value_input = WebDriverWait(driver, 10).until(
|
|
EC.presence_of_element_located((By.CSS_SELECTOR, "input[placeholder='Value']"))
|
|
)
|
|
|
|
# Clear the input field before entering the new value
|
|
value_input.send_keys(Keys.CONTROL + "a") # Select all text in the field
|
|
value_input.send_keys(Keys.BACKSPACE) # Delete the selected text
|
|
time.sleep(1)
|
|
|
|
# Ensure the field is empty before entering the new value
|
|
assert value_input.get_attribute('value') == "", "The input field was not cleared!"
|
|
|
|
value_input.send_keys("10") # Enter the new value "10"
|
|
print("✔️ Value input set to 10")
|
|
time.sleep(1)
|
|
|
|
# Click Submit button
|
|
submit_btn = WebDriverWait(driver, 10).until(
|
|
EC.element_to_be_clickable((By.XPATH, "//button[.//span[text()='Submit']]"))
|
|
)
|
|
submit_btn.click()
|
|
print("✔️ Submit button clicked")
|
|
time.sleep(1)
|
|
|
|
# Click Yes in confirmation
|
|
confirm_yes_btn = WebDriverWait(driver, 10).until(
|
|
EC.element_to_be_clickable((By.XPATH, "//button[contains(@class, 'ant-btn-primary') and .//span[text()='Yes']]"))
|
|
)
|
|
confirm_yes_btn.click()
|
|
print("✔️ Confirmed Submit by clicking Yes")
|
|
time.sleep(2)
|
|
|
|
# Click another View icon (for a second data entry)
|
|
view_icon = WebDriverWait(driver, 10).until(
|
|
EC.element_to_be_clickable((By.XPATH, "(//i[contains(@class, 'anticon-right-circle-o')])[2]"))
|
|
)
|
|
view_icon.click()
|
|
print("✔️ Clicked on View icon of another data")
|
|
time.sleep(2)
|
|
|
|
# Click Update for the second entry
|
|
update_btn = WebDriverWait(driver, 10).until(
|
|
EC.element_to_be_clickable((By.XPATH, "//button[.//span[text()='Update']]"))
|
|
)
|
|
update_btn.click()
|
|
print("✔️ Clicked Update button")
|
|
time.sleep(2)
|
|
|
|
# Click Cancel for the second entry
|
|
cancel_btn = WebDriverWait(driver, 10).until(
|
|
EC.element_to_be_clickable((By.XPATH, "//button[.//span[text()='Cancel']]"))
|
|
)
|
|
cancel_btn.click()
|
|
print("✔️ Clicked Cancel button")
|
|
time.sleep(2)
|
|
|
|
# Confirm Cancel by clicking Yes
|
|
confirm_yes_btn = WebDriverWait(driver, 10).until(
|
|
EC.element_to_be_clickable((By.XPATH, "//button[contains(@class, 'ant-btn-primary') and .//span[text()='Yes']]"))
|
|
)
|
|
confirm_yes_btn.click()
|
|
print("✔️ Confirmed Cancel by clicking Yes")
|
|
time.sleep(2)
|
|
|
|
# ------------------- Add New Top-Up Data -------------------
|
|
|
|
# Click the Add button
|
|
add_btn = WebDriverWait(driver, 10).until(
|
|
EC.element_to_be_clickable((By.XPATH, "//button[.//span[text()='Add']]"))
|
|
)
|
|
add_btn.click()
|
|
print("✔️ Clicked Add button")
|
|
time.sleep(2)
|
|
|
|
# Input Name ("Marjorie")
|
|
name_input = WebDriverWait(driver, 10).until(
|
|
EC.presence_of_element_located((By.XPATH, "//input[@name='name']"))
|
|
)
|
|
name_input.send_keys("Marjorie")
|
|
print("✔️ Entered Name: Marjorie")
|
|
time.sleep(1)
|
|
|
|
# Input Value ("500")
|
|
value_input = WebDriverWait(driver, 10).until(
|
|
EC.presence_of_element_located((By.XPATH, "//input[@placeholder='Value']"))
|
|
)
|
|
value_input.send_keys("500")
|
|
print("✔️ Entered Value: 500")
|
|
time.sleep(1)
|
|
|
|
# Click Submit to add the data
|
|
submit_btn = WebDriverWait(driver, 10).until(
|
|
EC.element_to_be_clickable((By.XPATH, "//button[.//span[text()='Submit']]"))
|
|
)
|
|
submit_btn.click()
|
|
print("✔️ Clicked Submit button to add data")
|
|
time.sleep(1)
|
|
|
|
# Click Yes in confirmation
|
|
confirm_yes_btn = WebDriverWait(driver, 10).until(
|
|
EC.element_to_be_clickable((By.XPATH, "//button[contains(@class, 'ant-btn-primary') and .//span[text()='Yes']]"))
|
|
)
|
|
confirm_yes_btn.click()
|
|
print("✔️ Confirmed Submit by clicking Yes")
|
|
time.sleep(2)
|
|
|
|
finally:
|
|
# Close the browser after a brief wait
|
|
if driver:
|
|
print("Test completed. Closing the browser in 10 seconds...")
|
|
time.sleep(10)
|
|
driver.quit()
|
|
|
|
if __name__ == "__main__":
|
|
test_top_up()
|