Files
jarvis/capabilities/browser_control.py
2026-03-24 00:11:34 -05:00

49 lines
1.3 KiB
Python

"""
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