Selenium Web-Driver Firefox Profile - Disable popup and alert windows
Categories:
Selenium WebDriver: Disabling Firefox Pop-up and Alert Windows

Learn how to configure Firefox profiles in Selenium WebDriver to automatically handle or disable unwanted pop-up and alert windows, ensuring smoother test automation.
When automating web applications with Selenium WebDriver, encountering unexpected pop-up windows or JavaScript alerts can disrupt your test execution. These interruptions often require manual intervention, making your automated tests unreliable and inefficient. This article will guide you through configuring Firefox profiles to automatically disable or handle these pop-ups and alerts, allowing your tests to run seamlessly.
Understanding Firefox Profiles and Preferences
Firefox profiles store user-specific data such as bookmarks, history, cookies, and most importantly for our use case, preferences. Selenium WebDriver allows you to create and load custom Firefox profiles, giving you granular control over browser behavior. By modifying specific preferences within a profile, we can instruct Firefox to automatically dismiss or prevent certain types of pop-ups and alerts.
flowchart TD A[Start Selenium Test] --> B{Load Firefox Profile?} B -- Yes --> C[Create/Load Custom Profile] C --> D[Set Preferences for Pop-ups/Alerts] D --> E[Launch Firefox with Profile] E --> F[Execute Test Steps] F --> G{Encounter Pop-up/Alert?} G -- Yes (Handled) --> F G -- No --> F B -- No --> H[Launch Default Firefox] H --> F F --> I[End Test]
Flowchart of Selenium WebDriver launching Firefox with a custom profile to handle pop-ups.
Key Preferences for Pop-up and Alert Handling
To disable various types of pop-ups and alerts, you'll need to set specific preferences within your Firefox profile. Here are some of the most common and effective preferences:
dom.disable_open_during_load
: Prevents JavaScript from opening new windows or tabs during page load.dom.disable_window_open_feature.menubar
,dom.disable_window_open_feature.toolbar
, etc.: Disables specific features for windows opened viawindow.open()
.browser.popups.showPopupBlocker
: Controls whether Firefox displays a notification when a pop-up is blocked.browser.tabs.remote.autostart
: Related to multi-process Firefox, sometimes impacts how new windows are handled.alerts.disable_for_nsIWindowWatcher
: A less common but sometimes useful preference for certain types of alerts.
For JavaScript alert()
, confirm()
, and prompt()
dialogs, Selenium WebDriver typically handles these automatically by default. However, if you encounter issues, setting the unexpectedAlertBehaviour
capability can help.
Implementing Profile Configuration in Selenium
The process involves creating a FirefoxProfile
object, setting the desired preferences, and then passing this profile to the FirefoxOptions
or DesiredCapabilities
when initializing the WebDriver.
Java
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.firefox.FirefoxProfile;
public class FirefoxProfileExample {
public static void main(String[] args) {
// Set the path to your geckodriver executable
System.setProperty("webdriver.gecko.driver", "path/to/geckodriver");
// Create a FirefoxProfile object
FirefoxProfile profile = new FirefoxProfile();
// Disable pop-up windows opened by JavaScript during page load
profile.setPreference("dom.disable_open_during_load", true);
// Disable the pop-up blocker notification
profile.setPreference("browser.popups.showPopupBlocker", false);
// Optionally, disable specific window features
profile.setPreference("dom.disable_window_open_feature.menubar", true);
profile.setPreference("dom.disable_window_open_feature.toolbar", true);
profile.setPreference("dom.disable_window_open_feature.location", true);
profile.setPreference("dom.disable_window_open_feature.status", true);
profile.setPreference("dom.disable_window_open_feature.resizable", true);
profile.setPreference("dom.disable_window_open_feature.scrollbars", true);
// For JavaScript alerts, confirms, prompts, Selenium handles them by default.
// If issues persist, you might need to set unexpectedAlertBehaviour in options.
FirefoxOptions options = new FirefoxOptions();
options.setProfile(profile);
// options.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.ACCEPT);
// Initialize FirefoxDriver with the custom profile
WebDriver driver = new FirefoxDriver(options);
// Navigate to a URL that might trigger pop-ups/alerts
driver.get("https://www.example.com");
// Perform your test actions
// ...
// Close the browser
driver.quit();
}
}
Python
from selenium import webdriver from selenium.webdriver.firefox.options import Options from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
Set the path to your geckodriver executable
geckodriver_path = "path/to/geckodriver"
Create a FirefoxProfile object
profile = FirefoxProfile()
Disable pop-up windows opened by JavaScript during page load
profile.set_preference("dom.disable_open_during_load", True)
Disable the pop-up blocker notification
profile.set_preference("browser.popups.showPopupBlocker", False)
Optionally, disable specific window features
profile.set_preference("dom.disable_window_open_feature.menubar", True) profile.set_preference("dom.disable_window_open_feature.toolbar", True) profile.set_preference("dom.disable_window_open_feature.location", True) profile.set_preference("dom.disable_window_open_feature.status", True) profile.set_preference("dom.disable_window_open_feature.resizable", True) profile.set_preference("dom.disable_window_open_feature.scrollbars", True)
For JavaScript alerts, confirms, prompts, Selenium handles them by default.
If issues persist, you might need to set unexpected_alert_behaviour in options.
options = Options() options.profile = profile
options.unexpected_alert_behaviour = 'accept'
Initialize FirefoxDriver with the custom profile
driver = webdriver.Firefox(executable_path=geckodriver_path, options=options)
Navigate to a URL that might trigger pop-ups/alerts
driver.get("https://www.example.com")
Perform your test actions
...
Close the browser
driver.quit()
geckodriver
path is correctly set. If not, Selenium will fail to launch Firefox.Handling JavaScript Alerts, Confirms, and Prompts
While Firefox profile preferences are excellent for controlling new browser windows and pop-up blocker behavior, JavaScript alert()
, confirm()
, and prompt()
dialogs are handled differently by Selenium WebDriver. By default, Selenium will try to accept these alerts. If you need to explicitly interact with them (e.g., dismiss, get text, send keys), you can use the Alert
interface.
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class JavaScriptAlertHandler {
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.gecko.driver", "path/to/geckodriver");
WebDriver driver = new FirefoxDriver();
driver.get("http://www.seleniumframework.com/Practiceform/"); // Example URL with alerts
// Click a button that triggers an alert
driver.findElement(By.id("alert")).click();
Thread.sleep(1000); // Wait for alert to appear
// Switch to the alert and accept it
Alert alert = driver.switchTo().alert();
System.out.println("Alert text: " + alert.getText());
alert.accept(); // Clicks OK
// Click a button that triggers a confirm
driver.findElement(By.id("confirm")).click();
Thread.sleep(1000);
Alert confirm = driver.switchTo().alert();
System.out.println("Confirm text: " + confirm.getText());
confirm.dismiss(); // Clicks Cancel
driver.quit();
}
}
Example of handling JavaScript alerts and confirms in Java.
By combining Firefox profile preferences for pop-up windows and explicit alert handling for JavaScript dialogs, you can achieve robust and uninterrupted test automation with Selenium WebDriver.