from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.firefox.service import Service as FirefoxService
from selenium.webdriver.edge.service import Service as EdgeService
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.firefox import GeckoDriverManager
from webdriver_manager.microsoft import EdgeChromiumDriverManager
def test_cross_browser_compatibility():
browsers = [
('chrome', webdriver.Chrome, ChromeDriverManager),
('firefox', webdriver.Firefox, GeckoDriverManager),
('edge', webdriver.Edge, EdgeChromiumDriverManager)
]
url = 'https://example.com'
expected_title = 'Example Domain'
for name, driver_class, driver_manager in browsers:
driver = None
try:
driver = driver_class(service=driver_class.Service(driver_manager().install()))
driver.get(url)
wait = WebDriverWait(driver, 10)
wait.until(EC.title_is(expected_title))
actual_title = driver.title
assert actual_title == expected_title, f"Title mismatch on {name}: expected '{expected_title}', got '{actual_title}'"
finally:
if driver:
driver.quit()
if __name__ == '__main__':
test_cross_browser_compatibility()This script tests the website https://example.com on three browsers: Chrome, Firefox, and Edge.
We use webdriver_manager to automatically download and manage browser drivers, so no manual setup is needed.
For each browser, the script:
- Starts the browser
- Navigates to the URL
- Waits explicitly until the page title matches the expected title
- Asserts the page title is exactly 'Example Domain'
- Closes the browser to free resources
This ensures the website works correctly on all three browsers, demonstrating cross-browser compatibility.
Using explicit waits avoids flaky tests by waiting for the page to load fully before checking the title.
Try-finally ensures browsers close even if assertions fail, preventing leftover browser processes.