Class AbstractWebDriver

    • Method Detail

      • getIdleTimeout

         final Duration getIdleTimeout()

        Idle timeout before a READY driver is considered stale and eligible for recycling/retirement.

      • setIdleTimeout

         final Unit setIdleTimeout(Duration idleTimeout)

        Idle timeout before a READY driver is considered stale and eligible for recycling/retirement.

      • isMockedPageSource

         Boolean isMockedPageSource()

        True if pageSource is a mocked/fake value (e.g. offline / synthetic content).

      • isRecovered

         final Boolean isRecovered()

        Driver participated in a recovery workflow (e.g. auto relaunch) after crash.

      • setRecovered

         final Unit setRecovered(Boolean isRecovered)

        Driver participated in a recovery workflow (e.g. auto relaunch) after crash.

      • isReused

         final Boolean isReused()

        Driver reused from pool after previous task.

      • isRecyclable

         final Boolean isRecyclable()

        If recyclable the driver returns to a standby pool post-task; else it remains dedicated until retired.

      • setRecyclable

         final Unit setRecyclable(Boolean isRecyclable)

        If recyclable the driver returns to a standby pool post-task; else it remains dedicated until retired.

      • getIgnoreDOMFeatures

         final Boolean getIgnoreDOMFeatures()

        Skip DOM feature computation if true (performance optimization for pure interaction tasks).

      • setIgnoreDOMFeatures

         final Unit setIgnoreDOMFeatures(Boolean ignoreDOMFeatures)

        Skip DOM feature computation if true (performance optimization for pure interaction tasks).

      • getName

         <Error class: unknown class> getName()
      • getDelayPolicy

         <Error class: unknown class> getDelayPolicy()

        Delay policy (per action random delay ranges) derived from browser settings.

      • getTimeoutPolicy

         <Error class: unknown class> getTimeoutPolicy()

        Timeout policy (per action max durations) derived from browser settings.

      • getBrowser

         AbstractBrowser getBrowser()

        The browser of the driver. The browser defines methods and events to manipulate a real browser.

      • getId

         Integer getId()

        The driver id, starts with 1. The id is unique in process scope.

      • free

         final Unit free()

        Transition to READY (available for assignment). Resets cancellation/crash flags. Must only be called after INIT or WORKING states.

      • startWork

         final Unit startWork()

        Transition to WORKING (exclusive usage). Resets cancellation/crash flags.

      • retire

         final Unit retire()

        Mark for disposal after current task.

      • cancel

         final Unit cancel()

        Request cooperative cancellation of current task (best-effort).

      • addInitScript

         Unit addInitScript(String script)

        Adds a script which would be evaluated whenever the page is navigated. @mcp

        The script is evaluated after the document was created but before any of its scripts were run. This is useful to amend the JavaScript environment, e.g. to seed Math.random.

        This function should be invoked before a navigation, usually in an onWillNavigate event handler.

        Parameters:
        script - JavaScript source code to add.
      • navigate

         Unit navigate(String url)

        Navigates current page to the given URL. @mcp

        driver.navigate("https://www.example.com")
        driver.waitForNavigation()
        Parameters:
        url - URL to navigate page to.
      • reload

         Unit reload()

        Reloads the current page. @mcp

        This method should trigger a reload of the current page, similar to how a user would refresh the page in a browser.

      • currentUrl

         String currentUrl()

        Returns a string representing the current URL that the browser is looking at. @mcp

        The current url is always the main frame's document.documentURI if the browser succeed to return it, and is displayed in the browser's address bar.

        If the browser failed to return a proper url, returns the passed in url to navigate, just like a real user enter a url in the address bar but the browser failed to load the page.

        NOTE: the url can be non-standard, for example:

        about:blank chrome://newtab chrome://settings

        see ai.platon.cdt.kt.protocol.types.page.NavigationEntry.userTypedURL

        Returns:

        A string containing the URL of the document, or the passed in url to navigate.

      • url

         String url()

        The URL read-only property of the Document interface returns the document location as a string. @mcp

        This property equals to javascript document.URL. The document.URL property returns the same value. The document.documentURI property can be used on any document types, while the document.URL property can only be used on HTML documents.

        Returns:

        A string containing the URL of the document

      • documentURI

         String documentURI()

        Returns the document location as a string. @mcp

        This property equals to javascript document.documentURI.

        The document.URL property which returns the same value. The document.documentURI property can be used on any document types, while the document.URL property can only be used on HTML documents.

        Returns:

        The document's documentURI.

      • baseURI

         String baseURI()

        Returns the document's baseURI. @mcp

        The baseURI is a property of Node, it's the absolute base URL of the document containing the node. A baseURI is used to resolve relative URLs.

        The base URL is determined as follows:

        • By default, the base URL is the location of the document (as determined by window.location).

        • If the document has an <base> element, its href attribute is used.

        Returns:

        The document's baseURI.

      • title

         String title()

        Returns the title of the current page. @mcp

      • referrer

         String referrer()

        The referrer property returns the URI of the page that linked to this page. @mcp

        The value is an empty string if the user navigated to the page directly (not through a link, but, for example, by using a bookmark).

        Inside an <iframe>, the referrer will initially be set to the same value as the href of the parent window's Window.location.

        Returns:

        The document's referrer.

      • chat

         ModelResponse chat(String prompt, String selector)

        Interact with an AI model using the context of the element selected by selector. @mcp

        The AI model receives the element's content and structure as context along with the provided prompt.

        Parameters:
        prompt - The question or instruction for the AI model.
        selector - The selector of the element, multiple formats supported.
        Returns:

        A ModelResponse containing the model's answer.

      • evaluate

         <T extends Any> T evaluate(String expression, T defaultValue)

        Executes JavaScript and returns the result, or defaultValue if the result is null or incompatible. @mcp

        Parameters:
        expression - The JavaScript expression to evaluate.
        defaultValue - The value to return if evaluation fails or returns null.
        Returns:

        The evaluation result or defaultValue.

      • evaluateValue

         <T extends Any> T evaluateValue(String expression, T defaultValue)

        Executes JavaScript and returns the result as a JSON-serializable value, or defaultValue if null/incompatible. @mcp

        Parameters:
        expression - The JavaScript expression to evaluate.
        defaultValue - The value to return if evaluation fails or returns null.
        Returns:

        The evaluation result or defaultValue.

      • scrollDown

         Double scrollDown(Integer count)

        The current page frame scrolls down for count times. @mcp

        driver.scrollDown(3)

        TODO: use mouseWheel instead

        Parameters:
        count - The times to scroll down.
      • scrollUp

         Double scrollUp(Integer count)

        The current page frame scrolls up for count times. @mcp

        driver.scrollUp(3)

        TODO: use mouseWheel instead

        Parameters:
        count - The times to scroll up.
      • scrollBy

         Double scrollBy(Double pixels, Boolean smooth)

        Scrolls the current page frame vertically by the given number of pixels. @mcp

        Positive values scroll down, negative values scroll up. The target position is clamped to the scrollable range 0, scrollHeight - viewportHeight.

        When smooth is true a deterministic, step‑wise scrolling algorithm is used (instead of relying on the browser's native smooth scrolling) for higher stability: it issues incremental window.scrollTo() calls and waits for the viewport to settle after each step. This reduces race conditions with lazy‑loaded content or async layout changes and yields more predictable final positions.

        Typical usage:

        // Scroll down 200px smoothly (default)
        driver.scrollBy()
        // Scroll up 500px immediately
        driver.scrollBy(-500.0, smooth = false)
        // Scroll down one viewport height, smooth
        val y = driver.scrollBy(driver.viewportHeight(), smooth = true)
        Parameters:
        pixels - The delta in pixels to scroll; positive scrolls down, negative scrolls up.
        smooth - Whether to perform a deterministic smooth scrolling sequence.
        Returns:

        The final vertical scroll offset (window.scrollY) after scrolling.

      • scrollToTop

         Double scrollToTop()

        The current page frame scrolls to the top. @mcp

        driver.scrollToTop()
      • scrollToBottom

         Double scrollToBottom()

        The current page frame scrolls to the bottom. @mcp

        driver.scrollToBottom()
      • scrollToMiddle

         Double scrollToMiddle(Double ratio)

        The current page frame scrolls to the middle. @mcp

        driver.scrollToMiddle(0.2)
        driver.scrollToMiddle(0.5)
        driver.scrollToMiddle(0.8)
        Parameters:
        ratio - The ratio of the page to scroll to, 0.0 means the top, 1.0 means the bottom.
      • scrollToViewport

         Double scrollToViewport(Double n, Boolean smooth)

        Scrolls to the position of the n-th viewport.

        Parameters:
        n - Viewport index (1 represents the first screen)
        smooth - Whether to use smooth scrolling
        Returns:

        Actual scrollY pixel value after scrolling

      • outerHTML

         String outerHTML()

        Returns the document's HTML markup. @mcp

        val html = driver.outerHTML()

        If the document does not exist, returns null.

        Returns:

        The HTML markup of the document.

      • textContent

         String textContent(String selector)

        Returns the text content of the document or a specific element. @mcp

        If selector is null, returns the text content of the entire document (usually document.body.innerText). If selector is provided, returns the text content of the first matching element.

        If the document or element does not exist, returns null.

        val bodyText = driver.textContent()
        val titleText = driver.textContent("h1.title")
        Parameters:
        selector - The selector of the element, multiple formats supported.
        Returns:

        The text content, or null if not found.

      • extract

         Map<String, String> extract(Map<String, String> fields)

        Extracts multiple fields from the page using CSS selectors. @mcp

        Parameters:
        fields - A map where keys are field names and values are CSS selectors.
        Returns:

        A map containing the extracted text content for each field. Values are null if the selector matches nothing.

      • selectHyperlinks

         List<Hyperlink> selectHyperlinks(String selector, Integer offset, Integer limit)

        Find hyperlinks in elements matching the selector. NOTE: Currently constructs absolute URLs by concatenating baseURI and raw href; TODO: robust resolution & abs: support.

        Parameters:
        selector - The selector of the element, multiple formats supported.
        offset - The offset of the first element to select.
        limit - The maximum number of elements to select.
      • selectAnchors

         List<GeoAnchor> selectAnchors(String selector, Integer offset, Integer limit)

        Select anchors (link + coordinates) – placeholder implementation until util binding available.

        Parameters:
        selector - The selector of the element, multiple formats supported.
        offset - The offset of the first element to select.
        limit - The maximum number of elements to select.
      • selectImages

         List<String> selectImages(String selector, Integer offset, Integer limit)

        Select image URLs (abs:src) – placeholder implementation.

        Parameters:
        selector - The selector of the element, multiple formats supported.
        offset - The offset of the first element to select.
        limit - The maximum number of elements to select.
      • waitForSelector

         Duration waitForSelector(String selector)

        Wait until the element identified by the selector becomes present in the DOM or timeout. @mcp

        val remainingTime = driver.waitForSelector("h2.title")
        Parameters:
        selector - The selector of the element, multiple formats supported.
        Returns:

        The remaining time until timeout when the element becomes present.

      • waitForSelector

         Duration waitForSelector(String selector, SuspendFunction0<Unit> action)

        Wait for the element identified by the selector to become present in the DOM, or until timeout. @mcp

        This method periodically checks for the existence of the element. If the element is not found during a check, the action will be executed, such as scrolling the page down.

        val remainingTime = driver.waitForSelector("h2.title") {
         driver.scrollDown()
        }
        Parameters:
        selector - The selector of the element, multiple formats supported.
        action - The action to execute when the element is not found.
      • waitForNavigation

         Duration waitForNavigation(String oldUrl)

        Wait until the current url changes or timeout. @mcp

        val url = "https://www.example.com"
        driver.navigate(url)
        var remainingTime = driver.waitForNavigation()
        if (remainingTime 0) {
          driver.click("a[href='/next']")
          remainingTime = driver.waitForNavigation(url)
        }
      • waitForNavigation

         Duration waitForNavigation(String oldUrl, Duration timeout)

        Wait until the current url changes or timeout. @mcp

        val timeout = Duration.ofSeconds(30)
        val url = "https://www.example.com"
        driver.navigate(url)
        var remainingTime = driver.waitForNavigation(timeout)
        if (remainingTime 0) {
          driver.click("a[href='/next']")
          remainingTime = driver.waitForNavigation(url, timeout)
        }
        Parameters:
        timeout - The maximum time to wait for the url to change.
      • waitUntil

         Duration waitUntil(SuspendFunction0<Boolean> predicate)

        Wait until the predicate returns true. @mcp

        val remainingTime = driver.waitUntil {
           driver.exists("h2.title")
        }
        Parameters:
        predicate - The predicate to check.
        Returns:

        The remaining time until timeout when the predicate returns true.

      • waitUntil

         Duration waitUntil(Duration timeout, SuspendFunction0<Boolean> predicate)

        Wait until the predicate returns true. @mcp

        val remainingTime = driver.waitUntil(Duration.ofSeconds(10)) {
           driver.exists("h2.title")
        }
        Parameters:
        timeout - The maximum time to wait for the predicate to return true.
        predicate - The predicate to check.
        Returns:

        The remaining time until timeout when the predicate returns true.

      • randomDelayMillis

         final Long randomDelayMillis(String action, IntRange fallback)

        Generate a random delay in milliseconds for an action.

        Parameters:
        action - Named action bucket (fallbacks: specific -> default -> provided fallback range).
        fallback - Used if policy values are missing / invalid.
      • newJsoupSession

         Connection newJsoupSession()

        Create a new Jsoup session with the last page's context, which means, the same headers and cookies. @mcp

        Returns:

        The Jsoup session.

      • loadJsoupResource

         Connection.Response loadJsoupResource(String url)

        Load the url as a resource with Jsoup rather than browser rendering, with the last page's context. @mcp

        This means, the same headers and cookies.

        Parameters:
        url - The URL to load.
        Returns:

        The Jsoup response.

      • loadResource

         NetworkResourceResponse loadResource(String url)

        Load the url as a resource without browser rendering, with the last page's context. @mcp

        This means, the same headers and cookies.

        Parameters:
        url - The URL to load.
        Returns:

        The network resource response.