1c5fd0ffee
Navigation: open-wait (open + block until loaded) DOM: key, hover, check/uncheck, clear, focus, submit, poll, scroll, select, eval, wait-for Tabs: pin/unpin, screenshot, watch-url (block until URL matches regex) New command groups: page info, storage get/set, cookies list/get/set Extension: add cookies permission
39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
import click
|
|
from browser_cli.client import send_command, BrowserNotConnected
|
|
from rich.console import Console
|
|
from rich.table import Table
|
|
|
|
console = Console()
|
|
|
|
|
|
def _handle(command, args=None):
|
|
try:
|
|
return send_command(command, args or {})
|
|
except BrowserNotConnected as e:
|
|
console.print(f"[red]Error:[/red] {e}")
|
|
raise SystemExit(1)
|
|
except RuntimeError as e:
|
|
console.print(f"[red]Browser error:[/red] {e}")
|
|
raise SystemExit(1)
|
|
|
|
|
|
@click.group("page")
|
|
def page_group():
|
|
"""Inspect current page metadata."""
|
|
|
|
|
|
@page_group.command("info")
|
|
def page_info():
|
|
"""Show title, URL, readyState, language, and meta tags of the active tab."""
|
|
info = _handle("page.info") or {}
|
|
table = Table(show_header=False)
|
|
table.add_column("Field", style="bold cyan", no_wrap=True)
|
|
table.add_column("Value")
|
|
table.add_row("Title", info.get("title") or "")
|
|
table.add_row("URL", info.get("url") or "")
|
|
table.add_row("Ready", info.get("readyState") or "")
|
|
table.add_row("Lang", info.get("lang") or "")
|
|
for key, val in (info.get("meta") or {}).items():
|
|
table.add_row(f"meta:{key}", val)
|
|
console.print(table)
|