Bird
Raised Fist0
Selenium Pythontesting~15 mins

WebDriver setup (ChromeDriver, GeckoDriver) in Selenium Python - Build an Automation Script

Choose your learning style10 modes available
Setup WebDriver and open a browser
Preconditions (2)
Step 1: Import necessary Selenium WebDriver modules
Step 2: Create a WebDriver instance for Chrome or Firefox
Step 3: Open the browser and navigate to 'https://example.com'
Step 4: Verify the page title is 'Example Domain'
Step 5: Close the browser
✅ Expected Result: Browser opens, navigates to https://example.com, page title matches 'Example Domain', then browser closes
Automation Requirements - Selenium with Python
Assertions Needed:
Verify page title equals 'Example Domain'
Best Practices:
Use explicit waits if needed
Use try-finally to ensure browser closes
Use By selectors properly
Handle driver setup with options if needed
Automated Solution
Selenium Python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.firefox.service import Service as FirefoxService
import time

# Choose browser: 'chrome' or 'firefox'
browser = 'chrome'

try:
    if browser == 'chrome':
        service = ChromeService()  # Assumes chromedriver is in PATH
        driver = webdriver.Chrome(service=service)
    elif browser == 'firefox':
        service = FirefoxService()  # Assumes geckodriver is in PATH
        driver = webdriver.Firefox(service=service)
    else:
        raise ValueError('Unsupported browser')

    driver.get('https://example.com')

    # Assertion: check page title
    assert driver.title == 'Example Domain', f"Expected title 'Example Domain' but got '{driver.title}'"

finally:
    driver.quit()

This script sets up a WebDriver for Chrome or Firefox depending on the browser variable.

We import necessary modules from Selenium, including webdriver and By.

The Service classes are used to manage the driver executables assuming they are in the system PATH.

We open the browser and navigate to https://example.com.

We assert the page title matches the expected string 'Example Domain'. If it does not, the assertion fails and shows a message.

The try-finally block ensures the browser closes even if an error occurs.

This setup follows best practices by cleanly managing driver lifecycle and using clear assertions.

Common Mistakes - 4 Pitfalls
Not closing the browser after test
Hardcoding driver executable path without flexibility
Using deprecated Selenium APIs or missing imports
Not verifying page title or any assertion
Bonus Challenge

Now add data-driven testing to open both Chrome and Firefox browsers and verify the page title for each

Show Hint

Practice

(1/5)
1. What is the main purpose of using ChromeDriver or GeckoDriver in Selenium Python?
easy
A. To connect Selenium scripts with the browser for automation
B. To write test cases in Python
C. To create HTML reports of test results
D. To manage database connections during tests

Solution

  1. Step 1: Understand WebDriver role

    WebDriver acts as a bridge between Selenium scripts and the browser.
  2. Step 2: Identify driver purpose

    ChromeDriver and GeckoDriver are specific drivers to control Chrome and Firefox browsers respectively.
  3. Final Answer:

    To connect Selenium scripts with the browser for automation -> Option A
  4. Quick Check:

    Driver connects Selenium to browser = B [OK]
Hint: Drivers link Selenium to browsers for automation [OK]
Common Mistakes:
  • Thinking drivers write test cases
  • Confusing drivers with reporting tools
  • Assuming drivers manage databases
2. Which of the following is the correct way to import and set up ChromeDriver using Selenium 4+ in Python?
easy
A. from selenium import webdriver from selenium.webdriver.chrome.service import Service service = Service('path/to/chromedriver') driver = webdriver.Chrome(service=service)
B. import webdriver driver = webdriver.Chrome('path/to/chromedriver')
C. from selenium.webdriver import ChromeDriver service = ChromeDriver('path/to/chromedriver') driver = webdriver.Chrome(service)
D. from selenium import webdriver service = webdriver.Chrome('path/to/chromedriver') driver = webdriver.Chrome(service)

Solution

  1. Step 1: Check import statements

    Correct import for Service class is from selenium.webdriver.chrome.service import Service.
  2. Step 2: Verify driver initialization

    Driver must be created with webdriver.Chrome(service=service) passing the Service object.
  3. Final Answer:

    from selenium import webdriver from selenium.webdriver.chrome.service import Service service = Service('path/to/chromedriver') driver = webdriver.Chrome(service=service) -> Option A
  4. Quick Check:

    Use Service class and pass to Chrome() = A [OK]
Hint: Use Service class and pass it to Chrome() constructor [OK]
Common Mistakes:
  • Passing driver path directly to Chrome() without Service
  • Wrong import paths for Service
  • Using incorrect class names like ChromeDriver
3. What will happen if you run this code snippet?
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service = Service('wrong/path/chromedriver')
driver = webdriver.Chrome(service=service)
driver.get('https://example.com')
medium
A. The browser opens and loads the page successfully
B. The driver automatically downloads the correct ChromeDriver
C. A FileNotFoundError or WebDriverException is raised due to wrong driver path
D. The code runs but the page does not load

Solution

  1. Step 1: Analyze driver path usage

    Service is given a wrong path to ChromeDriver executable.
  2. Step 2: Understand error on invalid path

    Selenium cannot find the driver file, so it raises an error like FileNotFoundError or WebDriverException.
  3. Final Answer:

    A FileNotFoundError or WebDriverException is raised due to wrong driver path -> Option C
  4. Quick Check:

    Wrong driver path causes error = D [OK]
Hint: Wrong driver path causes immediate error [OK]
Common Mistakes:
  • Assuming driver auto-downloads
  • Expecting browser to open without driver
  • Thinking code runs but page stays blank
4. Identify the error in this GeckoDriver setup code and choose the correct fix:
from selenium import webdriver
service = Service('path/to/geckodriver')
driver = webdriver.Firefox(service=service)
driver.get('https://example.com')
medium
A. webdriver.Firefox() does not accept service parameter
B. Missing import of Service class from selenium.webdriver.firefox.service
C. Incorrect driver path format, should use double backslashes
D. driver.get() should be called before creating driver

Solution

  1. Step 1: Check imports

    Service class for Firefox must be imported from selenium.webdriver.firefox.service.
  2. Step 2: Verify usage

    Without importing Service, the code will raise NameError or similar.
  3. Final Answer:

    Missing import of Service class from selenium.webdriver.firefox.service -> Option B
  4. Quick Check:

    Import Service for Firefox driver = C [OK]
Hint: Always import Service class for the browser driver used [OK]
Common Mistakes:
  • Not importing Service class
  • Wrong path format causing silent failure
  • Calling driver.get() before driver creation
5. You want to run Selenium tests on Firefox but your Firefox browser updated to version 115. Which is the best practice to ensure your GeckoDriver setup works correctly?
hard
A. Remove the Service class and pass the driver path directly to webdriver.Firefox()
B. Use the existing GeckoDriver without changes; Selenium handles compatibility automatically
C. Switch to ChromeDriver since GeckoDriver does not support Firefox 115
D. Download the GeckoDriver version compatible with Firefox 115 and update the Service path accordingly

Solution

  1. Step 1: Understand driver-browser compatibility

    GeckoDriver must match the Firefox browser version to work properly.
  2. Step 2: Apply best practice for updates

    Download the correct GeckoDriver version for Firefox 115 and update your code to use its path.
  3. Final Answer:

    Download the GeckoDriver version compatible with Firefox 115 and update the Service path accordingly -> Option D
  4. Quick Check:

    Match driver version with browser version = A [OK]
Hint: Always match driver version with browser version [OK]
Common Mistakes:
  • Assuming Selenium auto-updates drivers
  • Switching browsers unnecessarily
  • Passing driver path without Service class
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