Bird
Raised Fist0
Selenium Pythontesting~15 mins

Simple alert acceptance in Selenium Python - Build an Automation Script

Choose your learning style10 modes available
Accept a simple alert popup
Preconditions (1)
Step 1: Locate the button that triggers the alert popup
Step 2: Click the button to open the alert
Step 3: Switch to the alert popup
Step 4: Accept the alert popup
✅ Expected Result: The alert popup is accepted and closed successfully
Automation Requirements - Selenium with Python
Assertions Needed:
Verify that the alert is present before accepting
Verify that after accepting the alert, no alert is present
Best Practices:
Use explicit waits to wait for the alert to be present
Use Selenium's Alert API to handle alert popups
Avoid hardcoded sleeps
Use clear and maintainable locators
Automated Solution
Selenium Python
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
from selenium.common.exceptions import TimeoutException

# Initialize the WebDriver (e.g., Chrome)
driver = webdriver.Chrome()

try:
    driver.get('https://example.com/alert')  # Replace with actual URL

    # Locate the button that triggers the alert
    alert_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, 'alertButton'))
    )

    # Click the button to open the alert
    alert_button.click()

    # Wait for the alert to be present
    WebDriverWait(driver, 10).until(EC.alert_is_present())

    # Switch to the alert
    alert = driver.switch_to.alert

    # Assert alert text is not empty (optional check)
    assert alert.text != '', 'Alert text should not be empty'

    # Accept the alert
    alert.accept()

    # Verify alert is no longer present
    try:
        WebDriverWait(driver, 3).until(EC.alert_is_present())
        alert_present = True
    except TimeoutException:
        alert_present = False

    assert not alert_present, 'Alert should be closed after acceptance'

finally:
    driver.quit()

This script starts by opening the browser and navigating to the page with the alert button.

It waits explicitly for the alert button to be clickable, then clicks it to trigger the alert popup.

Next, it waits for the alert to appear using an explicit wait, then switches to the alert using Selenium's Alert API.

It asserts that the alert text is not empty to confirm the alert is present.

Then it accepts the alert to close it.

Finally, it verifies that the alert is no longer present by waiting briefly and catching a timeout exception if no alert appears.

The driver quits at the end to close the browser.

Common Mistakes - 3 Pitfalls
{'mistake': 'Using time.sleep() instead of explicit waits', 'why_bad': 'Hardcoded sleeps slow down tests and can cause flakiness if the alert appears faster or slower than expected.', 'correct_approach': "Use Selenium's explicit waits like WebDriverWait with expected_conditions to wait for the alert."}
Not switching to the alert before accepting
Using incorrect locator for the alert button
Bonus Challenge

Now add data-driven testing with 3 different alert buttons that trigger alerts with different messages

Show Hint

Practice

(1/5)
1. What does the driver.switch_to.alert.accept() command do in Selenium Python?
easy
A. It closes the browser window.
B. It refreshes the current page.
C. It clicks the OK button on a simple alert popup.
D. It sends text input to the alert popup.

Solution

  1. Step 1: Understand alert handling in Selenium

    The driver.switch_to.alert accesses the alert popup currently shown by the browser.
  2. Step 2: Accepting the alert

    The accept() method clicks the OK button on the alert, closing it.
  3. Final Answer:

    It clicks the OK button on a simple alert popup. -> Option C
  4. Quick Check:

    accept() = clicks OK [OK]
Hint: accept() always clicks OK on alert popups [OK]
Common Mistakes:
  • Confusing accept() with dismiss() which clicks Cancel
  • Trying to send keys with accept()
  • Assuming accept() closes the browser
2. Which of the following is the correct syntax to accept a simple alert in Selenium Python?
easy
A. driver.alert.accept()
B. driver.switch_to.alert.accept()
C. driver.switch_to_alert.accept()
D. driver.switchTo().alert().accept()

Solution

  1. Step 1: Recall correct Selenium Python syntax

    The correct way to switch to alert is driver.switch_to.alert.
  2. Step 2: Confirm method chaining

    Calling accept() on the alert object accepts the alert.
  3. Final Answer:

    driver.switch_to.alert.accept() -> Option B
  4. Quick Check:

    Correct syntax = driver.switch_to.alert.accept() [OK]
Hint: Use driver.switch_to.alert.accept() to accept alerts [OK]
Common Mistakes:
  • Using Java-style syntax like switchTo()
  • Missing the switch_to part
  • Using underscores incorrectly in method names
3. What will happen when the following code runs if a simple alert is present?
driver.switch_to.alert.accept()
print("Alert accepted")
medium
A. The alert is accepted but nothing is printed.
B. The alert is ignored and 'Alert accepted' is printed.
C. An exception is thrown because alert is not handled.
D. The alert is accepted and 'Alert accepted' is printed.

Solution

  1. Step 1: Accept the alert

    The accept() method clicks OK on the alert, closing it.
  2. Step 2: Print confirmation

    After alert is accepted, the print statement runs and outputs the message.
  3. Final Answer:

    The alert is accepted and 'Alert accepted' is printed. -> Option D
  4. Quick Check:

    alert.accept() then print = alert accepted message [OK]
Hint: accept() closes alert, next lines run normally [OK]
Common Mistakes:
  • Thinking alert is ignored without accept()
  • Expecting print before alert is accepted
  • Assuming exception if alert is present
4. Identify the error in this code snippet for accepting an alert:
alert = driver.switch_to.alert
alert.accept
medium
A. Missing parentheses after accept method call.
B. Incorrect alert switching syntax.
C. alert variable name is reserved.
D. accept() should be called on driver, not alert.

Solution

  1. Step 1: Check method call syntax

    The accept method must be called with parentheses accept() to execute.
  2. Step 2: Identify missing parentheses

    Without parentheses, alert.accept is just a reference, not a call, so alert is not accepted.
  3. Final Answer:

    Missing parentheses after accept method call. -> Option A
  4. Quick Check:

    Method calls need () to run [OK]
Hint: Always add () to call methods like accept() [OK]
Common Mistakes:
  • Forgetting parentheses on method calls
  • Using wrong variable names
  • Calling accept() on driver instead of alert
5. You want to accept a simple alert only if it is present, without causing an error if no alert shows. Which code snippet correctly does this?
hard
A. try: driver.switch_to.alert.accept() except: pass
B. if driver.switch_to.alert: driver.switch_to.alert.accept()
C. driver.switch_to.alert.accept() if alert else None
D. driver.switch_to.alert.accept()

Solution

  1. Step 1: Understand alert presence check

    Selenium throws an exception if alert is not present, so we must catch it.
  2. Step 2: Use try-except to accept alert safely

    Wrapping accept() in try-except avoids errors if alert is missing.
  3. Final Answer:

    try: driver.switch_to.alert.accept() except: pass -> Option A
  4. Quick Check:

    Use try-except to handle optional alerts [OK]
Hint: Wrap alert accept in try-except to avoid errors [OK]
Common Mistakes:
  • Checking alert presence with if directly
  • Calling accept() without error handling
  • Using undefined alert variable
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard