""" Chrome browser automation via Selenium. Selenium 4+ handles ChromeDriver automatically — no manual install needed. """ from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import urllib.parse _driver = None def _get_driver(headless: bool = False) -> webdriver.Chrome: global _driver if _driver is None: options = Options() if headless: options.add_argument("--headless=new") options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") _driver = webdriver.Chrome(options=options) return _driver def navigate_to(url: str): """Navigate Chrome to a URL.""" driver = _get_driver() driver.get(url) return driver.title def search_web(query: str): """Perform a Google search in Chrome.""" encoded = urllib.parse.quote_plus(query) return navigate_to(f"https://www.google.com/search?q={encoded}") def get_page_title() -> str: driver = _get_driver() return driver.title def get_page_url() -> str: driver = _get_driver() return driver.current_url def close_browser(): global _driver if _driver: _driver.quit() _driver = None