Initial commit from agent
This commit is contained in:
48
capabilities/browser_control.py
Normal file
48
capabilities/browser_control.py
Normal file
@@ -0,0 +1,48 @@
|
||||
"""
|
||||
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
|
||||
Reference in New Issue
Block a user