How to handle Permission Pop-ups using Selenium WebDriver | Selenium |Python|
Akram Siddiqui
Posted on January 6, 2024
Hello Dev Community,
I'm currently working on Selenium WebDriver automation with Python, focusing on handling permission pop-ups in headless mode on a Linux machine. Specifically, I want to handle the location permission alert and allow it to make my tests run smoothly.
In non-headless mode, the following code works perfectly:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.chrome.options import Options as ChromeOptions
from time import sleep
# Chrome options setup
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--incognito')
# Configure content settings to disable notifications and geolocation
content_settings = {'notifications': 0, 'geolocation': 0}
profile = {'managed_default_content_settings': content_settings}
prefs = {'profile': profile}
chrome_options.add_experimental_option('prefs', prefs)
# Add arguments to disable notifications, geolocation, and media stream
chrome_options.add_argument('--disable-notifications')
chrome_options.add_argument('--disable-geolocation')
chrome_options.add_argument('--use-fake-ui-for-media-stream')
path = r"C:\Program Files (x86)\chromedriver-win64\chromedriver.exe"
# WebDriver setup using WebDriver Manager
service = ChromeService(path)
driver = webdriver.Chrome(service=service, options=chrome_options)
driver.maximize_window()
# Navigate to the specified URLs
driver.get('https://www.cleartrip.com/')
driver.get('https://whatmylocation.com/')
sleep(15)
However, when I switch to headless mode on a Linux machine, the location permission alert is not being handled as expected. Here's the headless mode code:
def create_headless_chrome_driver():
chrome_options = ChromeOptions()
chrome_options.add_argument('--start-maximized')
chrome_options.add_argument('--headless')
# Allow geolocation
chrome_options.binary_location = CHROME_BINARY_PATH
chrome_options.add_argument('window-size=1920x1080')
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
# Handling geolocation
chrome_options.add_argument('--incognito')
# Configure content settings to disable notifications and geolocation
content_settings = {'notifications': 1, 'geolocation': 1}
profile = {'managed_default_content_settings': content_settings}
prefs = {'profile': profile}
chrome_options.add_experimental_option('prefs', prefs)
# Add arguments to disable notifications, geolocation, and media stream
chrome_options.add_argument('--disable-notifications')
chrome_options.add_argument('--disable-geolocation')
chrome_options.add_argument('--use-fake-ui-for-media-stream')
service = ChromeService(executable_path=CHROMEDRIVER_PATH)
driver = webdriver.Chrome(service=service, options=chrome_options)
return driver
**
💖 💪 🙅 🚩
Akram Siddiqui
Posted on January 6, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
python How to handle Permission Pop-ups using Selenium WebDriver | Selenium |Python|
January 6, 2024