Avoiding pop-up blocking when opening multiple Firefox tabs simultaneously in Selenium
In previous article Set up the Selenium Webdriver. Let’s automate with Python! , I introduced the procedure to build Selenium execution environment in Python.
In this article, I would like to introduce a problem I actually ran into when opening multiple URLs in different tabs at the same time in Firefox and how to deal with it.
What I originally wanted to do
- Open multiple URLs (about 100) at the same time and check the displayed screen visually.
- Then, in Selenium, open the URL by executing the
window.open()
function of Javascript.
Issue: Pop-up blocks appear when opening multiple tabs in Firefox
Run the following code using Firefox WebDriver.
1from selenium import webdriver
2
3driver = webdriver.Firefox()
4driver.get('https://www.google.com/')
5for i in range(0, 100):
6 driver.execute_script(f"window.open('https://www.google.com/', '{i}')")
Then, after about 20 tabs were opened smoothly, the following pop-up block was suddenly displayed.
Since popup blocks are only displayed for tabs running the window.open()
function, you will definitely be overlooked if a lot of browsers’ tabs are opened. Allowing pop-up blockers will display the page correctly, but it is not automated because of human intervention.
Solution: set the maximum number of pop-ups
Programmatically set the values of the browser’s “configuration” options, which are used by the Options
class when creating the Firefox WebDriver. The following sample code uses two properties.
dom.disable_open_during_load
: Perform a pop-up block during page loading.dom.popup_maximum
: the maximum number of separate tabs to be displayed by popups (default: 20).
1from selenium import webdriver
2from selenium.webdriver.firefox.options import Options
3
4options = Options()
5options.set_preference("dom.disable_open_during_load", False)
6options.set_preference('dom.popup_maximum', -1)
7
8driver = webdriver.Firefox(options=options)
9driver.get('https://www.google.com/')
10for i in range(0, 100):
11 driver.execute_script(f"window.open('https://www.google.com/', '{i}')")
When dom.popup_maximum
is set to -1
, the maximum display limit of tabs is unlimited and popups are not blocked.