100Days of Code Challenge

Day 6 of 100daysofcode : Testing Interactive Elements using Selenium

To test all the interactive elements on the DemoQA website using Selenium, we need to cover different types of elements such as:

  • Checkboxes
  • Radio Buttons
  • Text Inputs
  • Buttons
  • Links
  • Alerts
  • Sliders
  • Forms

Below is an example Selenium script that tests all major elements on the DemoQA website

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# Initialize WebDriver (Chrome in this example)
options = webdriver.ChromeOptions()
options.add_argument('--start-maximized')
driver = webdriver.Chrome(options=options)

# Function to test all elements on the DemoQA website
def test_demoqa_elements():
    driver.get("https://demoqa.com/")
    
    # Wait for the page to load
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    
    # Test Checkboxes
    print("Testing Checkboxes...")
    driver.find_element(By.XPATH, "//span[text()='Elements']").click()
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//span[text()='Checkbox']"))).click()
    
    checkbox1 = driver.find_element(By.CLASS_NAME, "rct-checkbox")
    checkbox1.click()
    time.sleep(1)
    print("Checkbox selected.")
    
    checkbox1.click()  # Deselecting
    print("Checkbox deselected.")
    
    # Test Radio Buttons
    print("Testing Radio Buttons...")
    driver.find_element(By.XPATH, "//span[text()='Radio Button']").click()
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//label[text()='Yes']"))).click()
    time.sleep(1)
    print("Radio Button 'Yes' selected.")
    
    # Test Text Inputs
    print("Testing Text Inputs...")
    driver.find_element(By.XPATH, "//span[text()='Text Box']").click()
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "userName"))).send_keys("John Doe")
    driver.find_element(By.ID, "userEmail").send_keys("john.doe@example.com")
    driver.find_element(By.ID, "currentAddress").send_keys("123 Main St.")
    driver.find_element(By.ID, "permanentAddress").send_keys("456 Oak St.")
    driver.find_element(By.XPATH, "//button[text()='Submit']").click()
    time.sleep(1)
    print("Text box form submitted.")
    
    # Test Buttons
    print("Testing Buttons...")
    driver.find_element(By.XPATH, "//span[text()='Buttons']").click()
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "doubleClickBtn"))).click()
    time.sleep(1)
    print("Button clicked.")
    
    # Test Links
    print("Testing Links...")
    driver.find_element(By.XPATH, "//span[text()='Links']").click()
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//a[text()='Home']"))).click()
    print("Navigated to 'Home' link.")
    time.sleep(2)
    
    # Test Alerts
    print("Testing Alerts...")
    driver.find_element(By.XPATH, "//span[text()='Alerts, Frame & Windows']").click()
    driver.find_element(By.ID, "alertButton").click()
    WebDriverWait(driver, 10).until(EC.alert_is_present())
    driver.switch_to.alert.accept()  # Accept the alert
    print("Alert accepted.")
    
    # Test Sliders
    print("Testing Sliders...")
    driver.find_element(By.XPATH, "//span[text()='Slider']").click()
    slider = driver.find_element(By.XPATH, "//input[@type='range']")
    ActionChains(driver).drag_and_drop_by_offset(slider, 50, 0).perform()  # Move slider
    time.sleep(1)
    print("Slider value changed.")
    
    # Test Modal Dialog
    print("Testing Modal Dialog...")
    driver.find_element(By.XPATH, "//span[text()='Modal Dialogs']").click()
    driver.find_element(By.ID, "showSmallModal").click()  # Open small modal
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "closeSmallModal"))).click()  # Close modal
    print("Modal dialog tested.")
    
    # Test Accordions
    print("Testing Accordions...")
    driver.find_element(By.XPATH, "//span[text()='Accordions']").click()
    driver.find_element(By.XPATH, "//button[text()='First Button']").click()  # Expand first section
    time.sleep(1)
    print("Accordion section expanded.")
    
# Run the test function
try:
    test_demoqa_elements()
finally:
    driver.quit()
1 Like