"""DOM, content-extraction, and page-info namespaces: ``b.dom.*``, ``b.extract.*``, ``b.page.*``.""" from __future__ import annotations from browser_cli.sdk.base import Namespace class DomNS(Namespace): """Query and drive page elements in the active (or specified) tab.""" def query(self, selector: str) -> list[dict]: return self._c._cmd("dom.query", {"selector": selector}) or [] def click(self, selector: str) -> None: self._c._cmd("dom.click", {"selector": selector}) def type(self, selector: str, text: str) -> None: self._c._cmd("dom.type", {"selector": selector, "text": text}) def attr(self, selector: str, attr: str) -> list[str]: return self._c._cmd("dom.attr", {"selector": selector, "attr": attr}) or [] def text(self, selector: str) -> list[str]: return self._c._cmd("dom.text", {"selector": selector}) or [] def exists(self, selector: str) -> bool: return self._c._cmd("dom.exists", {"selector": selector}) or False def scroll(self, selector: str | None = None, *, x: int | None = None, y: int | None = None) -> None: """Scroll to a CSS selector or to pixel coordinates.""" self._c._cmd("dom.scroll", {"selector": selector, "x": x, "y": y}) def select(self, selector: str, value: str) -> None: """Set the value of a