Bird
Raised Fist0
Selenium Pythontesting~15 mins

Confirmation alert handling in Selenium Python - Build an Automation Script

Choose your learning style10 modes available
Handle confirmation alert on delete action
Preconditions (2)
Step 1: Locate the delete button for the first item in the list
Step 2: Click the delete button
Step 3: Wait for the confirmation alert to appear
Step 4: Verify the alert text is 'Are you sure you want to delete this item?'
Step 5: Accept the confirmation alert
Step 6: Verify the item is removed from the list
✅ Expected Result: The confirmation alert appears with correct text, and after accepting it, the item is deleted from the list
Automation Requirements - Selenium with Python
Assertions Needed:
Alert text matches expected confirmation message
Item is no longer present in the list after accepting alert
Best Practices:
Use explicit waits to wait for alert presence
Use Selenium's Alert API to handle confirmation alerts
Use clear and maintainable locators (e.g., By.CSS_SELECTOR or By.ID)
Avoid hardcoded sleeps
Use try-except to handle unexpected alert absence
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
from selenium.webdriver.common.alert import Alert
import unittest

class TestConfirmationAlertHandling(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get('https://example.com/items')  # Replace with actual URL
        self.wait = WebDriverWait(self.driver, 10)

    def test_delete_item_confirmation_alert(self):
        driver = self.driver
        wait = self.wait

        # Locate the delete button for the first item
        delete_button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.item .delete-btn')))
        delete_button.click()

        try:
            # Wait for alert to be present
            alert = wait.until(EC.alert_is_present())

            # Verify alert text
            alert_text = alert.text
            self.assertEqual(alert_text, 'Are you sure you want to delete this item?')

            # Accept the alert
            alert.accept()

            # Verify the item is removed from the list
            # Wait until the first item is no longer present or list updates
            wait.until(EC.invisibility_of_element_located((By.CSS_SELECTOR, '.item')))

            # Optionally, check the count of items decreased
            items = driver.find_elements(By.CSS_SELECTOR, '.item')
            self.assertTrue(len(items) < 1, 'Item was not deleted')

        except TimeoutException:
            self.fail('Confirmation alert did not appear')

    def tearDown(self):
        self.driver.quit()

if __name__ == '__main__':
    unittest.main()

This test script uses Selenium with Python's unittest framework to automate the confirmation alert handling.

setUp: Opens the browser and navigates to the items page.

test_delete_item_confirmation_alert: Clicks the delete button on the first item, waits explicitly for the alert, verifies the alert text, accepts the alert, then waits for the item to be removed from the list and asserts the deletion.

Explicit waits ensure the test waits only as long as needed for elements or alerts, avoiding fixed delays.

tearDown: Closes the browser after the test.

This approach follows best practices by using explicit waits, proper locators, and handling exceptions to make the test reliable and maintainable.

Common Mistakes - 4 Pitfalls
Using time.sleep() instead of explicit waits for alert presence
Not verifying the alert text before accepting
Using brittle locators like absolute XPath for delete button
Not handling the case when alert does not appear
Bonus Challenge

Now add data-driven testing with 3 different items to delete, verifying alert handling for each.

Show Hint

Practice

(1/5)
1. What is the correct method to accept a confirmation alert in Selenium with Python?
easy
A. driver.confirm.accept()
B. driver.switch_to.alert.dismiss()
C. driver.switch_to.alert.accept()
D. driver.alert.accept()

Solution

  1. Step 1: Switch to the alert

    Use driver.switch_to.alert to access the alert popup.
  2. Step 2: Accept the alert

    Call accept() on the alert object to confirm it.
  3. Final Answer:

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

    Accept alert = driver.switch_to.alert.accept() [OK]
Hint: Use switch_to.alert before accept() to handle confirmation [OK]
Common Mistakes:
  • Using dismiss() instead of accept() to confirm
  • Calling accept() directly on driver without switch_to.alert
  • Using incorrect method names like confirm.accept()
2. Which of the following is the correct syntax to dismiss a confirmation alert in Selenium Python?
easy
A. driver.alert.dismiss()
B. driver.switch_to.alert.dismiss()
C. driver.dismiss.alert()
D. driver.switch_to.dismiss()

Solution

  1. Step 1: Access the alert

    Use driver.switch_to.alert to get the alert object.
  2. Step 2: Call dismiss() method

    Use dismiss() to cancel or reject the confirmation alert.
  3. Final Answer:

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

    Dismiss alert = driver.switch_to.alert.dismiss() [OK]
Hint: Dismiss confirmation alert with switch_to.alert.dismiss() [OK]
Common Mistakes:
  • Calling dismiss() on driver directly
  • Using wrong method order like switch_to.dismiss()
  • Using driver.alert.dismiss() which is invalid
3. What will be the output of the following code snippet if the confirmation alert is accepted?
driver.find_element(By.ID, 'confirmBtn').click()
alert = driver.switch_to.alert
alert.accept()
print('Alert accepted')
medium
A. Alert accepted
B. Alert dismissed
C. No output, code throws exception
D. Alert text printed

Solution

  1. Step 1: Click triggers confirmation alert

    The button click opens a confirmation alert popup.
  2. Step 2: Accept the alert and print message

    The alert is accepted using alert.accept(), then prints 'Alert accepted'.
  3. Final Answer:

    Alert accepted -> Option A
  4. Quick Check:

    Accept alert prints confirmation message [OK]
Hint: Accept alert then print confirmation message [OK]
Common Mistakes:
  • Expecting alert text to print instead of message
  • Using dismiss() but expecting accept output
  • Not switching to alert before accept()
4. Identify the error in the following code that tries to dismiss a confirmation alert:
driver.find_element(By.ID, 'confirmBtn').click()
alert = driver.alert
alert.dismiss()
medium
A. Incorrect alert access; should use driver.switch_to.alert
B. dismiss() method does not exist for alerts
C. Missing import for By module
D. No error; code is correct

Solution

  1. Step 1: Check alert access method

    The code uses driver.alert, which is invalid in Selenium Python.
  2. Step 2: Correct way to access alert

    Use driver.switch_to.alert to get the alert object before calling dismiss().
  3. Final Answer:

    Incorrect alert access; should use driver.switch_to.alert -> Option A
  4. Quick Check:

    Alert access = driver.switch_to.alert [OK]
Hint: Always use driver.switch_to.alert to access alerts [OK]
Common Mistakes:
  • Using driver.alert instead of driver.switch_to.alert
  • Calling dismiss() on wrong object
  • Ignoring import errors unrelated to alert handling
5. You want to verify the text of a confirmation alert before accepting it. Which code snippet correctly handles this scenario?
hard
A. alert = driver.switch_to.alert if alert.get_text == 'Are you sure?': alert.accept()
B. alert = driver.alert if alert.getText() == 'Are you sure?': alert.accept()
C. alert = driver.switch_to.alert if alert.text() == 'Are you sure?': alert.dismiss()
D. alert = driver.switch_to.alert if alert.text == 'Are you sure?': alert.accept()

Solution

  1. Step 1: Access alert correctly

    Use driver.switch_to.alert to get the alert object.
  2. Step 2: Check alert text property

    Use alert.text (property, not method) to get alert message and compare.
  3. Step 3: Accept alert if text matches

    If text matches 'Are you sure?', call alert.accept() to confirm.
  4. Final Answer:

    alert = driver.switch_to.alert if alert.text == 'Are you sure?': alert.accept() -> Option D
  5. Quick Check:

    Use alert.text property and accept() method [OK]
Hint: Use alert.text property to check text before accept() [OK]
Common Mistakes:
  • Using alert.text() as a method instead of property
  • Using driver.alert instead of driver.switch_to.alert
  • Calling dismiss() when accept() is needed
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