Chrome configuration in Selenium Python - Build an Automation Script
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options import unittest class TestChromeConfig(unittest.TestCase): def setUp(self): options = Options() options.add_argument('--start-maximized') options.add_argument('--disable-notifications') self.driver = webdriver.Chrome(options=options) def test_chrome_configuration(self): self.driver.get('https://www.example.com') # Verify window is maximized by comparing window size to screen size window_size = self.driver.get_window_size() screen_width = self.driver.execute_script('return screen.width') screen_height = self.driver.execute_script('return screen.height') self.assertEqual(window_size['width'], screen_width, 'Window width is not maximized') self.assertEqual(window_size['height'], screen_height, 'Window height is not maximized') # Verify no notification permission popup by checking absence of notification permission dialog # This is a simple check: no alert present try: alert = self.driver.switch_to.alert alert_text = alert.text self.fail(f'Unexpected alert present: {alert_text}') except Exception: # No alert present, pass pass def tearDown(self): self.driver.quit() if __name__ == '__main__': unittest.main()
The setUp method creates a ChromeOptions object and adds two arguments: --start-maximized to open the browser maximized, and --disable-notifications to block notification popups.
The test navigates to https://www.example.com. It then checks the browser window size matches the screen size by running JavaScript to get screen width and height and comparing to the window size.
To verify no notification popup appears, it tries to switch to an alert. If an alert is present, the test fails. If no alert is found, it passes.
The tearDown method closes the browser after the test.
This structure uses unittest framework for clear setup, test, and cleanup phases.
Now add data-driven testing to launch Chrome with different sets of options: maximized only, disable notifications only, and both combined.
Practice
Options() in Selenium with Chrome?Solution
Step 1: Understand the role of Options()
TheOptions()class in Selenium is used to set Chrome browser configurations like headless mode, window size, or disabling notifications before launching the browser.Step 2: Differentiate from other Selenium features
Locating elements, writing assertions, and handling exceptions are separate tasks unrelated to browser configuration.Final Answer:
To customize Chrome browser settings before starting tests -> Option DQuick Check:
Options() = Customize browser [OK]
- Confusing Options() with element locators
- Thinking Options() handles test assertions
- Assuming Options() manages exceptions
Solution
Step 1: Recall correct syntax for headless argument
In Selenium, Chrome headless mode is enabled by adding the argument '--headless' with two dashes.Step 2: Check each option's correctness
options.add_argument('headless') misses dashes, options.set_headless(True) and D are invalid methods or attributes for Chrome Options.Final Answer:
options.add_argument('--headless') -> Option AQuick Check:
Headless argument needs '--' prefix [OK]
- Omitting dashes in argument string
- Using non-existent methods like set_headless()
- Assigning headless attribute directly
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--incognito')
driver = webdriver.Chrome(options=options)
driver.get('https://example.com')Solution
Step 1: Analyze the use of add_argument('--incognito')
The code adds the '--incognito' argument to Chrome options, which launches the browser in incognito mode.Step 2: Confirm driver behavior
The driver is created with these options and navigates to 'https://example.com' successfully without errors.Final Answer:
Chrome opens in incognito mode and loads example.com -> Option AQuick Check:
--incognito argument = incognito mode [OK]
- Assuming incognito disables page loading
- Thinking code causes syntax errors
- Confusing incognito with headless mode
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('disable-notifications')
driver = webdriver.Chrome(options=options)Solution
Step 1: Check argument syntax for disabling notifications
The argument to disable notifications must start with two dashes: '--disable-notifications'. The code misses these dashes.Step 2: Verify other parts of the code
Options() is imported correctly and webdriver.Chrome accepts options parameter, so no errors there.Final Answer:
Missing double dashes in argument string -> Option BQuick Check:
Arguments need '--' prefix [OK]
- Forgetting dashes in argument strings
- Assuming options parameter is invalid
- Misimporting Options class
Solution
Step 1: Confirm correct syntax for headless and disabling notifications
Both arguments must have double dashes: '--headless' and '--disable-notifications'. options = Options() options.add_argument('--headless') options.add_argument('--disable-notifications') uses both correctly.Step 2: Check invalid methods or missing dashes in other options
options = Options() options.add_argument('--headless') options.add_argument('disable-notifications') misses dashes for disable-notifications, options = Options() options.headless = True options.add_argument('disable-notifications') assigns headless attribute incorrectly, options = Options() options.set_headless(True) options.add_argument('--disable-notifications') uses non-existent set_headless() method.Final Answer:
options.add_argument('--headless') and options.add_argument('--disable-notifications') -> Option CQuick Check:
Use '--' prefix for all Chrome options [OK]
- Missing dashes in argument strings
- Using invalid methods like set_headless()
- Assigning headless as attribute instead of argument
Ready to prove it?
Pass the test and this pattern moves unknown
