88 lines
3.4 KiB
Python
88 lines
3.4 KiB
Python
import time # Import time module for waiting
|
|
from selenium import webdriver
|
|
from selenium.webdriver.common.by import By
|
|
from selenium.webdriver.support.ui import WebDriverWait
|
|
from selenium.webdriver.support import expected_conditions as EC
|
|
|
|
# New instance of the Chrome driver
|
|
driver = webdriver.Chrome()
|
|
|
|
try:
|
|
# Step 1: Open the login page
|
|
driver.get("http://localhost:8080/lrr/lrr/admin.php") # Replace with your actual login page URL
|
|
|
|
# Step 2: Wait for the login page to fully load and locate the "Sign Up" link
|
|
sign_up_link = WebDriverWait(driver, 10).until(
|
|
EC.presence_of_element_located((By.ID, "signup_link"))
|
|
)
|
|
|
|
# Step 3: Click the "Sign Up" link to navigate to the sign-up page
|
|
sign_up_link.click()
|
|
|
|
# Step 4: Wait for the sign-up page to fully load
|
|
WebDriverWait(driver, 10).until(
|
|
EC.presence_of_element_located((By.ID, "signup_form"))
|
|
)
|
|
|
|
# Step 5: Fill out the sign-up form
|
|
driver.find_element(By.ID, "full_name").send_keys("John Doe")
|
|
driver.find_element(By.ID, "student_id").send_keys("12345678")
|
|
driver.find_element(By.ID, "email").send_keys("john.doe@example.com")
|
|
driver.find_element(By.ID, "password1").send_keys("Password123!")
|
|
driver.find_element(By.ID, "password2").send_keys("Password123!")
|
|
|
|
# Step 6: Submit the sign-up form
|
|
driver.find_element(By.ID, "signup_btn").click()
|
|
|
|
# Step 7: Wait for the sign-up result
|
|
WebDriverWait(driver, 10).until(
|
|
EC.presence_of_element_located((By.TAG_NAME, "body"))
|
|
)
|
|
|
|
# Check if sign-up failed
|
|
if "alert-danger" in driver.page_source:
|
|
print("Sign-up failed. Checking if form values are retained...")
|
|
|
|
# Wait for a few seconds (adjust as needed)
|
|
time.sleep(3)
|
|
|
|
# Modify the student ID again
|
|
driver.find_element(By.ID, "student_id").clear()
|
|
driver.find_element(By.ID, "student_id").send_keys("87654321")
|
|
|
|
# Verify if the other fields retain their values
|
|
assert driver.find_element(By.ID, "full_name").get_attribute("value") == "John Doe"
|
|
assert driver.find_element(By.ID, "email").get_attribute("value") == "john.doe@example.com"
|
|
assert driver.find_element(By.ID, "password1").get_attribute("value") == ""
|
|
assert driver.find_element(By.ID, "password2").get_attribute("value") == ""
|
|
|
|
# Resubmit the form
|
|
driver.find_element(By.ID, "signup_btn").click()
|
|
|
|
# Wait for the result again
|
|
WebDriverWait(driver, 10).until(
|
|
EC.presence_of_element_located((By.TAG_NAME, "body"))
|
|
)
|
|
|
|
# Check for success or failure after second attempt
|
|
if "alert-danger" in driver.page_source:
|
|
print("Second sign-up attempt failed. Further investigation needed.")
|
|
|
|
|
|
# Print the retained values
|
|
print("Retained form values after second attempt:")
|
|
print("Full Name:", driver.find_element(By.ID, "full_name").get_attribute("value"))
|
|
print("Email:", driver.find_element(By.ID, "email").get_attribute("value"))
|
|
# Password fields might be intentionally cleared, so they won't be printed here
|
|
print("Modified Student ID:", driver.find_element(By.ID, "student_id").get_attribute("value"))
|
|
|
|
else:
|
|
print("Second sign-up attempt successful!")
|
|
else:
|
|
print("Sign-up successful!")
|
|
|
|
|
|
|
|
finally:
|
|
# Close the browser
|
|
driver.quit() |