Firefox configuration in Selenium Python - Build an Automation Script
from selenium import webdriver from selenium.webdriver.firefox.options import Options import os import time def test_firefox_configuration(): # Set custom download directory download_dir = os.path.join(os.getcwd(), "downloads") if not os.path.exists(download_dir): os.makedirs(download_dir) # Create Firefox profile and set preferences profile = webdriver.FirefoxProfile() # Disable notifications profile.set_preference("dom.webnotifications.enabled", False) # Set download directory profile.set_preference("browser.download.folderList", 2) # 2 means use custom location profile.set_preference("browser.download.dir", download_dir) # Disable download prompt for common file types profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf,application/octet-stream") profile.set_preference("pdfjs.disabled", True) # Disable built-in PDF viewer # Initialize Firefox options options = Options() options.profile = profile # Launch Firefox with profile driver = webdriver.Firefox(options=options) try: # Navigate to a test page that triggers download driver.get("https://file-examples.com/index.php/sample-documents-download/sample-pdf-download/") # Click the download button for a sample PDF file download_button = driver.find_element("xpath", "//a[contains(text(),'Download sample pdf file')]" ) download_button.click() # Wait for download to complete (simple wait for demo purposes) time.sleep(5) # Verify file downloaded files = os.listdir(download_dir) assert any(file.endswith(".pdf") for file in files), "PDF file was not downloaded" # Since notifications are disabled, no popup should appear (cannot assert popup absence easily) # We rely on preference set and no exceptions thrown finally: driver.quit() if __name__ == "__main__": test_firefox_configuration()
This script creates a Firefox profile with preferences to disable notifications and set a custom download directory. It disables the notification popups by setting dom.webnotifications.enabled to False. It sets the download folder to a local downloads directory and disables the download prompt for PDF files by setting browser.helperApps.neverAsk.saveToDisk. The built-in PDF viewer is disabled to force download.
The test navigates to a sample PDF download page and clicks the download link. It waits briefly to allow the file to download, then checks the download folder for a PDF file. The test asserts that the file exists, confirming the download worked automatically.
Finally, the browser is closed properly in a finally block to ensure cleanup.
Now add data-driven testing with 3 different file types to download (PDF, CSV, XLS)