Bird
Raised Fist0
Selenium Pythontesting~10 mins

Submitting forms in Selenium Python - Test Execution Trace

Choose your learning style10 modes available
Test Overview

This test opens a web page with a form, fills in the input fields, submits the form, and verifies that the submission was successful by checking the confirmation message.

Test Code - Selenium
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
import unittest

class TestFormSubmission(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get('https://example.com/contact')

    def test_submit_form(self):
        driver = self.driver
        # Find the name input and enter text
        name_input = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, 'name'))
        )
        name_input.send_keys('Alice')

        # Find the email input and enter text
        email_input = driver.find_element(By.ID, 'email')
        email_input.send_keys('alice@example.com')

        # Find the message textarea and enter text
        message_input = driver.find_element(By.ID, 'message')
        message_input.send_keys('Hello, this is a test message.')

        # Submit the form by clicking the submit button
        submit_button = driver.find_element(By.ID, 'submit-btn')
        submit_button.click()

        # Wait for confirmation message to appear
        confirmation = WebDriverWait(driver, 10).until(
            EC.visibility_of_element_located((By.ID, 'confirmation'))
        )

        # Verify the confirmation text
        self.assertEqual(confirmation.text, 'Thank you for your message!')

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

if __name__ == '__main__':
    unittest.main()
Execution Trace - 12 Steps
StepActionSystem StateAssertionResult
1Test starts and Chrome browser opensBrowser window is open, ready to load the page—PASS
2Navigates to 'https://example.com/contact'Contact page with form is loadedPage loaded with form elements presentPASS
3Finds the name input field by ID 'name'Name input field is located and ready for inputElement with ID 'name' is presentPASS
4Enters 'Alice' into the name input fieldName input field contains text 'Alice'Input field value is 'Alice'PASS
5Finds the email input field by ID 'email'Email input field is located and ready for inputElement with ID 'email' is presentPASS
6Enters 'alice@example.com' into the email input fieldEmail input field contains text 'alice@example.com'Input field value is 'alice@example.com'PASS
7Finds the message textarea by ID 'message'Message textarea is located and ready for inputElement with ID 'message' is presentPASS
8Enters 'Hello, this is a test message.' into the message textareaMessage textarea contains the test messageTextarea value matches the entered messagePASS
9Finds the submit button by ID 'submit-btn' and clicks itForm is submitted, page processes submissionSubmit button is clickable and clickedPASS
10Waits for confirmation message with ID 'confirmation' to appearConfirmation message is visible on the pageElement with ID 'confirmation' is visiblePASS
11Checks that confirmation text equals 'Thank you for your message!'Confirmation text is displayed correctlyText matches expected confirmation messagePASS
12Test ends and browser closesBrowser window is closed—PASS
Failure Scenario
Failing Condition: The confirmation message does not appear after form submission
Execution Trace Quiz - 3 Questions
Test your understanding
What action does the test perform to submit the form?
APresses the Enter key in the message textarea
BClicks the submit button with ID 'submit-btn'
CCalls a JavaScript submit function directly
DRefreshes the page after filling inputs
Key Result
Always wait explicitly for elements that appear after actions like form submission to avoid flaky tests.

Practice

(1/5)
1. What does the submit() method do in Selenium when testing forms?
easy
A. It sends the form data to the server by submitting the form.
B. It clears all input fields in the form.
C. It refreshes the current web page.
D. It closes the browser window.

Solution

  1. Step 1: Understand the purpose of submit()

    The submit() method is used to send the form data to the server by submitting the form element.
  2. Step 2: Compare with other options

    Clearing inputs, refreshing pages, or closing windows are not actions performed by submit().
  3. Final Answer:

    It sends the form data to the server by submitting the form. -> Option A
  4. Quick Check:

    submit() sends form data [OK]
Hint: Remember: submit() sends form data to server [OK]
Common Mistakes:
  • Confusing submit() with clear() method
  • Thinking submit() refreshes the page
  • Assuming submit() closes the browser
2. Which of the following is the correct way to submit a form using Selenium in Python?
easy
A. driver.submit(By.ID, 'form')
B. driver.submit_element(By.ID, 'form')
C. driver.find_element(By.ID, 'form').send_keys(Keys.ENTER)
D. driver.find_element(By.ID, 'form').submit()

Solution

  1. Step 1: Identify correct Selenium syntax for submitting a form

    The correct method is to locate the form element and call submit() on it, like driver.find_element(By.ID, 'form').submit().
  2. Step 2: Check other options for errors

    Options A and B use invalid method names. driver.find_element(By.ID, 'form').send_keys(Keys.ENTER) sends ENTER key but does not explicitly submit the form element.
  3. Final Answer:

    driver.find_element(By.ID, 'form').submit() -> Option D
  4. Quick Check:

    Use element.submit() to submit form [OK]
Hint: Use element.submit() after locating form [OK]
Common Mistakes:
  • Using driver.submit() which does not exist
  • Trying to submit with send_keys instead of submit()
  • Calling submit on driver instead of element
3. What will happen when the following Selenium Python code runs?
form = driver.find_element(By.NAME, 'loginForm')
form.submit()
medium
A. The form with name 'loginForm' will be submitted to the server.
B. An error will occur because submit() is not a valid method.
C. Nothing happens because submit() does not trigger form submission.
D. The browser will close automatically.

Solution

  1. Step 1: Locate the form element by name

    The code finds the form element with name 'loginForm' using find_element(By.NAME, 'loginForm').
  2. Step 2: Call submit() on the form element

    Calling submit() on the form element sends the form data to the server, triggering submission.
  3. Final Answer:

    The form with name 'loginForm' will be submitted to the server. -> Option A
  4. Quick Check:

    form.submit() submits form [OK]
Hint: submit() on form element sends data [OK]
Common Mistakes:
  • Thinking submit() is invalid method
  • Assuming submit() does nothing
  • Confusing submit() with browser close
4. You wrote this code to submit a form:
form = driver.find_element(By.ID, 'signupForm')
form.submit

Why does the form not submit when you run it?
medium
A. Because the form ID is incorrect.
B. Because submit() method was not called with parentheses.
C. Because submit() is not supported on forms.
D. Because the driver is not initialized.

Solution

  1. Step 1: Check method call syntax

    The code uses form.submit without parentheses, so the method is referenced but not executed.
  2. Step 2: Understand effect of missing parentheses

    Without parentheses, the form does not submit because the method is not called. Adding () calls the method.
  3. Final Answer:

    Because submit() method was not called with parentheses. -> Option B
  4. Quick Check:

    Call submit() with () to execute [OK]
Hint: Always use parentheses to call methods [OK]
Common Mistakes:
  • Forgetting parentheses after submit
  • Assuming submit is a property, not a method
  • Not verifying form locator correctness
5. You want to submit a form but only have access to an input field inside it. Which Selenium Python code correctly submits the form?
hard
A. form_element = driver.find_element(By.ID, 'form1') form_element.submit()
B. input_element = driver.find_element(By.NAME, 'email') driver.submit(input_element)
C. input_element = driver.find_element(By.NAME, 'email') input_element.submit()
D. driver.find_element(By.NAME, 'email').send_keys(Keys.RETURN)

Solution

  1. Step 1: Locate input inside the form

    You can find an input element inside the form using find_element(By.NAME, 'email').
  2. Step 2: Call submit() on the input element

    Calling submit() on any element inside the form submits the entire form.
  3. Final Answer:

    input_element = driver.find_element(By.NAME, 'email') input_element.submit() -> Option C
  4. Quick Check:

    submit() on input submits form [OK]
Hint: submit() on any form element submits the form [OK]
Common Mistakes:
  • Trying to call driver.submit() which does not exist
  • Using send_keys(Keys.RETURN) which may not submit form
  • Not calling submit() on an element
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