Use a config.yaml file to store settings like:
- Browser options (e.g., headless: true/false)
- Window size
- Implicit wait times
- URLs and credentials
Example chrome_options.py utility to read config and apply Chrome options:
from selenium.webdriver.chrome.options import Options
import yaml
class ChromeOptionsFactory:
@staticmethod
def get_options(config_path='src/config/config.yaml') -> Options:
options = Options()
with open(config_path, 'r') as file:
config = yaml.safe_load(file)
chrome_cfg = config.get('chrome', {})
if chrome_cfg.get('headless', False):
options.add_argument('--headless=new') # modern headless mode
if window_size := chrome_cfg.get('window_size'):
options.add_argument(f'--window-size={window_size}')
if chrome_cfg.get('disable_gpu', False):
options.add_argument('--disable-gpu')
# Add more options as needed
return options
In test setup, use this factory to create the driver:
from selenium import webdriver
from src.utils.chrome_options import ChromeOptionsFactory
def create_driver():
options = ChromeOptionsFactory.get_options()
driver = webdriver.Chrome(options=options)
driver.implicitly_wait(10) # seconds
return driver