Bird
Raised Fist0
Selenium Pythontesting~15 mins

First Selenium script in Selenium Python - Build an Automation Script

Choose your learning style10 modes available
Verify Google Search Page Title
Preconditions (2)
Step 1: Open Chrome browser
Step 2: Navigate to 'https://www.google.com'
Step 3: Wait for the page to load completely
Step 4: Check the page title
✅ Expected Result: The page title should be 'Google'
Automation Requirements - Selenium with Python
Assertions Needed:
Verify the page title is exactly 'Google'
Best Practices:
Use explicit waits to wait for page load
Use By.ID or By.NAME locators if needed
Close the browser after test
Handle exceptions gracefully
Automated Solution
Selenium Python
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
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

# Setup ChromeDriver service
service = Service()

# Create a new Chrome browser instance
with webdriver.Chrome(service=service) as driver:
    try:
        # Navigate to Google homepage
        driver.get('https://www.google.com')

        # Wait up to 10 seconds for the title to be 'Google'
        WebDriverWait(driver, 10).until(EC.title_is('Google'))

        # Assert the page title
        assert driver.title == 'Google', f"Expected title 'Google' but got '{driver.title}'"

        print('Test Passed: Page title is Google')
    except TimeoutException:
        print('Test Failed: Page title did not become Google in time')
    except AssertionError as e:
        print(f'Test Failed: {e}')

This script uses Selenium WebDriver with Python to open the Chrome browser and navigate to the Google homepage.

We use WebDriverWait with expected_conditions.title_is to wait explicitly until the page title becomes exactly 'Google'. This avoids timing issues where the page might not be fully loaded yet.

The assertion checks that the title is exactly 'Google'. If it is, the test prints a success message; otherwise, it prints a failure message.

The with statement ensures the browser closes automatically after the test finishes, even if an error occurs.

This approach follows best practices by using explicit waits, proper assertions, and clean browser management.

Common Mistakes - 3 Pitfalls
Using time.sleep() instead of explicit waits
Not closing the browser after the test
Using incorrect locator strategies or hardcoded XPath for simple tasks
Bonus Challenge

Now add data-driven testing to open Google and verify the title for three different URLs: 'https://www.google.com', 'https://www.google.co.uk', and 'https://www.google.ca'.

Show Hint

Practice

(1/5)
1. What is the main purpose of a Selenium script in software testing?
easy
A. To automate browser actions for testing websites
B. To write manual test cases on paper
C. To design website layouts
D. To create databases for applications

Solution

  1. Step 1: Understand Selenium's role

    Selenium is a tool used to control browsers automatically for testing purposes.
  2. Step 2: Match purpose with options

    Only To automate browser actions for testing websites describes automating browser actions to test websites, which is Selenium's main use.
  3. Final Answer:

    To automate browser actions for testing websites -> Option A
  4. Quick Check:

    Selenium automates browsers = B [OK]
Hint: Selenium controls browsers automatically for testing [OK]
Common Mistakes:
  • Confusing Selenium with manual testing
  • Thinking Selenium designs websites
  • Mixing Selenium with database creation
2. Which of the following is the correct way to open a Chrome browser using Selenium in Python?
easy
A. driver = webdriver.open('chrome')
B. driver = webdriver.Firefox()
C. driver = webdriver.Chrome()
D. driver = webdriver.start('chrome')

Solution

  1. Step 1: Recall Selenium syntax for Chrome

    In Selenium Python, opening Chrome uses webdriver.Chrome() constructor.
  2. Step 2: Check options for correct syntax

    Only driver = webdriver.Chrome() uses the correct constructor. Others are either for different browsers or invalid methods.
  3. Final Answer:

    driver = webdriver.Chrome() -> Option C
  4. Quick Check:

    Open Chrome with webdriver.Chrome() = C [OK]
Hint: Use webdriver.Chrome() to open Chrome browser [OK]
Common Mistakes:
  • Using webdriver.Firefox() for Chrome
  • Calling non-existent methods like open() or start()
  • Missing parentheses after Chrome
3. What will be the output of this Selenium Python code snippet?
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://example.com')
element = driver.find_element(By.TAG_NAME, 'h1')
print(element.text)
driver.quit()
medium
A. Prints nothing because element.text is empty
B. Throws an error because By.TAG_NAME is invalid
C. Prints the URL 'https://example.com'
D. Prints the text inside the first <h1> tag on example.com

Solution

  1. Step 1: Understand code actions

    The code opens Chrome, navigates to example.com, finds the first <h1> element, prints its text, then closes the browser.
  2. Step 2: Analyze expected output

    example.com has an <h1> with text 'Example Domain', so element.text prints that text.
  3. Final Answer:

    Prints the text inside the first <h1> tag on example.com -> Option D
  4. Quick Check:

    find_element(By.TAG_NAME, 'h1') gets <h1> text = D [OK]
Hint: find_element with By.TAG_NAME gets first matching tag text [OK]
Common Mistakes:
  • Thinking By.TAG_NAME is invalid
  • Expecting URL printed instead of element text
  • Assuming element.text is empty without checking page
4. Identify the error in this Selenium Python script:
from selenium import webdriver

driver = webdriver.Chrome
driver.get('https://example.com')
driver.quit()
medium
A. Missing parentheses after webdriver.Chrome to create driver instance
B. Incorrect URL format in driver.get() method
C. driver.quit() is called before opening browser
D. Indentation error on driver.get() line is invalid in Python

Solution

  1. Step 1: Check webdriver.Chrome usage

    webdriver.Chrome is a class; to create a driver object, parentheses are needed: webdriver.Chrome()
  2. Step 2: Review other lines for errors

    URL format is correct, driver.quit() is after get().
  3. Step 3: Determine main error

    Missing parentheses causes driver to be a class, not an instance, so driver.get() will fail.
  4. Final Answer:

    Missing parentheses after webdriver.Chrome to create driver instance -> Option A
  5. Quick Check:

    webdriver.Chrome() needs parentheses = A [OK]
Hint: Always add () after webdriver.Chrome to create driver [OK]
Common Mistakes:
  • Forgetting parentheses after webdriver.Chrome
  • Thinking URL format is wrong
  • Confusing the order of driver.get() and driver.quit()
5. You want to write a Selenium script that opens Chrome, goes to 'https://example.com', checks if the page title is 'Example Domain', and then closes the browser. Which code snippet correctly does this with an assertion?
hard
A. from selenium import webdriver driver = webdriver.Chrome() driver.get('https://example.com') assert driver.title = 'Example Domain' driver.quit()
B. from selenium import webdriver driver = webdriver.Chrome() driver.get('https://example.com') assert driver.title == 'Example Domain' driver.quit()
C. from selenium import webdriver driver = webdriver.Chrome() driver.get('https://example.com') assert driver.title != 'Example Domain' driver.quit()
D. from selenium import webdriver driver = webdriver.Chrome() driver.get('https://example.com') assert driver.getTitle() == 'Example Domain' driver.quit()

Solution

  1. Step 1: Check correct assertion syntax

    In Python, assert uses '==' to compare values, so 'assert driver.title == "Example Domain"' is correct.
  2. Step 2: Verify method and property names

    driver.title is the correct property for page title; driver.getTitle() is incorrect in Python Selenium.
  3. Step 3: Confirm logic correctness

    from selenium import webdriver driver = webdriver.Chrome() driver.get('https://example.com') assert driver.title == 'Example Domain' driver.quit() asserts title equals 'Example Domain', which matches the requirement.
  4. Final Answer:

    Correct assertion with driver.title == 'Example Domain' -> Option B
  5. Quick Check:

    Use assert driver.title == 'Example Domain' = A [OK]
Hint: Use assert with '==' and driver.title property [OK]
Common Mistakes:
  • Using single '=' instead of '==' in assert
  • Using driver.getTitle() instead of driver.title
  • Asserting title not equal instead of equal
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