WebDriver setup (ChromeDriver, GeckoDriver) in Selenium Python - Build an Automation Script
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.
Now add data-driven testing to open both Chrome and Firefox browsers and verify the page title for each
Practice
Solution
Step 1: Understand WebDriver role
WebDriver acts as a bridge between Selenium scripts and the browser.Step 2: Identify driver purpose
ChromeDriver and GeckoDriver are specific drivers to control Chrome and Firefox browsers respectively.Final Answer:
To connect Selenium scripts with the browser for automation -> Option AQuick Check:
Driver connects Selenium to browser = B [OK]
- Thinking drivers write test cases
- Confusing drivers with reporting tools
- Assuming drivers manage databases
Solution
Step 1: Check import statements
Correct import for Service class is from selenium.webdriver.chrome.service import Service.Step 2: Verify driver initialization
Driver must be created with webdriver.Chrome(service=service) passing the Service object.Final Answer:
from selenium import webdriver from selenium.webdriver.chrome.service import Service service = Service('path/to/chromedriver') driver = webdriver.Chrome(service=service) -> Option AQuick Check:
Use Service class and pass to Chrome() = A [OK]
- Passing driver path directly to Chrome() without Service
- Wrong import paths for Service
- Using incorrect class names like ChromeDriver
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')Solution
Step 1: Analyze driver path usage
Service is given a wrong path to ChromeDriver executable.Step 2: Understand error on invalid path
Selenium cannot find the driver file, so it raises an error like FileNotFoundError or WebDriverException.Final Answer:
A FileNotFoundError or WebDriverException is raised due to wrong driver path -> Option CQuick Check:
Wrong driver path causes error = D [OK]
- Assuming driver auto-downloads
- Expecting browser to open without driver
- Thinking code runs but page stays blank
from selenium import webdriver
service = Service('path/to/geckodriver')
driver = webdriver.Firefox(service=service)
driver.get('https://example.com')Solution
Step 1: Check imports
Service class for Firefox must be imported from selenium.webdriver.firefox.service.Step 2: Verify usage
Without importing Service, the code will raise NameError or similar.Final Answer:
Missing import of Service class from selenium.webdriver.firefox.service -> Option BQuick Check:
Import Service for Firefox driver = C [OK]
- Not importing Service class
- Wrong path format causing silent failure
- Calling driver.get() before driver creation
Solution
Step 1: Understand driver-browser compatibility
GeckoDriver must match the Firefox browser version to work properly.Step 2: Apply best practice for updates
Download the correct GeckoDriver version for Firefox 115 and update your code to use its path.Final Answer:
Download the GeckoDriver version compatible with Firefox 115 and update the Service path accordingly -> Option DQuick Check:
Match driver version with browser version = A [OK]
- Assuming Selenium auto-updates drivers
- Switching browsers unnecessarily
- Passing driver path without Service class
Ready to prove it?
Pass the test and this pattern moves unknown
