From da18cb617d5eb07c56bc3f871b1b3751f7a6328d Mon Sep 17 00:00:00 2001 From: Eden Date: Fri, 21 Jun 2024 06:06:32 +0800 Subject: [PATCH] BUG430-Eden test script --- test/SeleniumEden/readme.md | 46 ++++++++++++++++ test/SeleniumEden/test.py | 88 ++++++++++++++++++++++++++++++ test/SeleniumEden/test_results.txt | 6 ++ 3 files changed, 140 insertions(+) create mode 100644 test/SeleniumEden/readme.md create mode 100644 test/SeleniumEden/test.py create mode 100644 test/SeleniumEden/test_results.txt diff --git a/test/SeleniumEden/readme.md b/test/SeleniumEden/readme.md new file mode 100644 index 0000000..ea8f26f --- /dev/null +++ b/test/SeleniumEden/readme.md @@ -0,0 +1,46 @@ +Sign-Up Automation Test Script +Overview +This script automates the sign-up process for a web application using Selenium WebDriver. It tests whether form values are retained correctly if the initial sign-up attempt fails and requires modification of the student ID before resubmission. + +Prerequisites +Python 3 +Selenium library +Chrome WebDriver +A running instance of the web application on http://localhost:8080 + +Configuration +Web Application URL: Make sure the web application is running at http://localhost:8080. Adjust the URL in the script if necessary. + +Update Element Locators: Ensure the IDs used in the script (signup_link, signup_form, full_name, student_id, email, password1, password2, signup_btn) match those in your web application. + +Run the script: + +Script Logic + +Open the Login Page: The script navigates to the login page of the web application. +Click the "Sign Up" Link: It waits for the "Sign Up" link to appear and clicks it to navigate to the sign-up page. +Fill Out the Sign-Up Form: It fills out the form fields (Full Name, Student ID, Email, Password). +Submit the Form: It submits the form and waits for the result. +Check for Sign-Up Failure: If sign-up fails, it checks if form values are retained. +Modify Student ID: If the form values are retained, it modifies the student ID and resubmits the form. +Verify Retained Values: It verifies if other fields retain their values after modifying the student ID. +Print Retained Values: If the second attempt is successful, it prints the retained form values. +Close the Browser: The browser is closed at the end of the script execution. + + + +The script provides the following output: + +Sign-Up Successful: Indicates the sign-up was successful on the first attempt. +Sign-Up Failed: Indicates the sign-up failed on the first attempt and checks for retained values. +Second Sign-Up Attempt Successful: Indicates the second sign-up attempt was successful and prints the retained values. +Second Sign-Up Attempt Failed: Indicates the second sign-up attempt also failed, suggesting further investigation is needed. +Notes +Form Field IDs: Ensure the IDs used in the script match those in your web application. +Password Fields: The script intentionally does not print password fields for security reasons. +Adjust Wait Times: Modify the wait times as needed depending on your application's response times. +Troubleshooting +Element Not Found: Verify the element IDs and update them in the script. +WebDriver Errors: Ensure the Chrome WebDriver is installed and matches your Chrome browser version. +Connection Errors: Ensure the web application is running and accessible at the specified URL. +Contributing diff --git a/test/SeleniumEden/test.py b/test/SeleniumEden/test.py new file mode 100644 index 0000000..7c6522d --- /dev/null +++ b/test/SeleniumEden/test.py @@ -0,0 +1,88 @@ +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() \ No newline at end of file diff --git a/test/SeleniumEden/test_results.txt b/test/SeleniumEden/test_results.txt new file mode 100644 index 0000000..c0131a0 --- /dev/null +++ b/test/SeleniumEden/test_results.txt @@ -0,0 +1,6 @@ +Sign-up failed. Checking if form values are retained... +Second sign-up attempt failed. Further investigation needed. +Retained form values after second attempt: +Full Name: John Doe +Email: john.doe@example.com +Modified Student ID: 87654321