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.

      • 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).

      • jvm

         JvmWebDriver jvm()

        Returns a JvmWebDriver to support other JVM languages, such as java, clojure, scala, and so on, the other JVM languages might have difficulty to handle kotlin suspend methods.

      • addInitScript

         Unit addInitScript(String script)

        Adds a script which would be evaluated in one of the following scenarios:

        • Whenever the page is navigated.

        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.
      • navigateTo

         Unit navigateTo(String url)

        Navigates current page to the given URL.

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

         String currentUrl()

        Returns a string representing the current URL that the browser is looking at. 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.

        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.

        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.

        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.

      • referrer

         String referrer()

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

        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)

        Chat with the AI model about the specified element.

        Parameters:
        prompt - The prompt to chat with
        selector - The selector to find the element
        Returns:

        The response from the model

      • evaluate

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

        Executes JavaScript and returns the result or defaultValue if evaluation returns null or incompatible type.

      • isVisible

         Boolean isVisible(String selector)

        Returns whether the element is visible.

        driver.isVisible("input[name='q']")
        Parameters:
        selector -
        • The selector of the element to check.

        Returns:

        Whether the element is visible.

      • isChecked

         Boolean isChecked(String selector)

        Returns whether the element is checked.

        driver.isChecked("input[name='agree']")
        Parameters:
        selector -
        • The selector of the element to check.

        Returns:

        Whether the element is checked.

      • scrollDown

         Double scrollDown(Integer count)

        The current page frame scrolls down for count times.

        driver.scrollDown(3)
        Parameters:
        count - The times to scroll down.
      • scrollUp

         Double scrollUp(Integer count)

        The current page frame scrolls up for count times.

        driver.scrollUp(3)
        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.

        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.

        driver.scrollToTop()
      • scrollToBottom

         Double scrollToBottom()

        The current page frame scrolls to the bottom.

        driver.scrollToBottom()
      • scrollToMiddle

         Double scrollToMiddle(Double ratio)

        The current page frame scrolls to the middle.

        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

      • clickNthAnchor

         String clickNthAnchor(Integer n, String rootSelector)

        Clicks the nth anchor element in the DOM.

        This function searches for all anchor (<a>) elements within the specified root element, and clicks the nth anchor element (0-based index). If the anchor element exists, it returns the href attribute of the clicked anchor element. If the element does not exist, it returns null.

        driver.clickNthAnchor(100, "body")
        Parameters:
        n - The index of the anchor element to click (0-based).
        rootSelector - The CSS selector of the root element to search within (default is "body").
        Returns:

        The href attribute of the clicked anchor element, or null if the element does not exist.

      • outerHTML

         String outerHTML()

        Returns the document's HTML markup.

        val html = driver.outerHTML()

        If the document does not exist, returns null.

        Returns:

        The HTML markup of the document.

      • outerHTML

         String outerHTML(String selector)

        Returns the node's HTML markup, the node is located by selector.

        If the node does not exist, returns null.

        val html = driver.outerHTML("h2.title")
        Parameters:
        selector - The selector to locate the node.
        Returns:

        The HTML markup of the node.

      • textContent

         String textContent(String selector)

        Returns the document's text content.

        If the document does not exist, returns null.

        val text = driver.textContent()
        Returns:

        The text content of the document.

      • selectFirstTextOrNull

         String selectFirstTextOrNull(String selector)

        Returns the node's text content, the node is located by selector.

        If the node does not exist, returns null.

        val text = driver.selectFirstTextOrNull("h2.title")
        Parameters:
        selector - The selector to locate the node.
        Returns:

        The text content of the node.

      • selectTextAll

         List<String> selectTextAll(String selector)

        Returns a list of text contents of all the elements matching the specified selector within the page.

        If no elements match the selector, returns an empty list.

        val texts = driver.selectTextAll("h2")
        Parameters:
        selector - The selector to locate the nodes.
        Returns:

        The text contents of the nodes.

      • selectFirstAttributeOrNull

         String selectFirstAttributeOrNull(String selector, String attrName)

        Returns the node's attribute value, the node is located by selector, the attribute is attrName.

        If the node does not exist, or the attribute does not exist, returns null.

        val classes = driver.selectFirstAttributeOrNull("h2.title", "class")
        Parameters:
        selector - The selector to locate the node.
        attrName - The attribute name to retrieve.
        Returns:

        The attribute value of the node.

      • selectAttributes

         Map<String, String> selectAttributes(String selector)

        Returns the node's attribute values, the node is located by selector.

        If the node do not exist, or the attribute does not exist, returns an empty list.

        val classes = driver.selectAttributes("h2.title", "class")
        Parameters:
        selector - The selector to locate the nodes.
        Returns:

        The attribute pairs of the nodes.

      • selectAttributeAll

         List<String> selectAttributeAll(String selector, String attrName, Integer start, Integer limit)

        Returns the nodes' attribute values, the nodes are located by selector, the attribute is attrName.

        If the nodes do not exist, or the attribute does not exist, returns an empty list.

        val classes = driver.selectAttributeAll("h2.title", "class")
        Parameters:
        selector - The selector to locate the nodes.
        attrName - The attribute name to retrieve.
        start - The offset of the first node to select.
        limit - The maximum number of nodes to select.
        Returns:

        The attribute values of the nodes.

      • setAttribute

         Unit setAttribute(String selector, String attrName, String attrValue)

        Set the attribute of an element located by selector.

        driver.setAttribute("h2.title", "class", "header")
        Parameters:
        selector - The CSS query to select an element.
        attrName - The attribute name to set.
        attrValue - The attribute value to set.
      • setAttributeAll

         Unit setAttributeAll(String selector, String attrName, String attrValue)

        Set the attribute of all elements matching the CSS query.

        driver.setAttributeAll("h2.title", "class", "header")
        Parameters:
        selector - The CSS query to select elements.
        attrName - The attribute name to set.
        attrValue - The attribute value to set.
      • selectFirstPropertyValueOrNull

         String selectFirstPropertyValueOrNull(String selector, String propName)

        Returns the node's property value, the node is located by selector, the property is propName.

        If the node does not exist, or the property does not exist, returns null.

        val classes = driver.selectFirstPropertyOrNull("input#input", "value")
        Parameters:
        selector - The selector to locate the node.
        propName - The property name to retrieve.
        Returns:

        The property value of the node.

      • selectPropertyValueAll

         List<String> selectPropertyValueAll(String selector, String propName, Integer start, Integer limit)

        Returns the nodes' property values, the nodes are located by selector, the property is propName.

        If the nodes do not exist, or the property does not exist, returns an empty list.

        val classes = driver.selectPropertyAll("input#input", "value")
        Parameters:
        selector - The selector to locate the nodes.
        propName - The property name to retrieve.
        start - The offset of the first node to select.
        limit - The maximum number of nodes to select.
        Returns:

        The property values of the nodes.

      • setProperty

         Unit setProperty(String selector, String propName, String propValue)

        Set the property of an element located by selector.

        driver.setProperty("input#input", "value")
        Parameters:
        selector - The CSS query to select an element.
        propName - The property name to set.
        propValue - The property value to set.
      • setPropertyAll

         Unit setPropertyAll(String selector, String propName, String propValue)

        Set the property of all elements matching the CSS query.

        driver.setPropertyAll("input#input", "value")
        Parameters:
        selector - The CSS query to select elements.
        propName - The property name to set.
        propValue - The property value to set.
      • 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 CSS query to select elements.
        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 CSS query to select elements.
        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 CSS query to select elements.
        offset - The offset of the first element to select.
        limit - The maximum number of elements to select.
      • clickTextMatches

         Unit clickTextMatches(String selector, String pattern, Integer count)

        This method clicks an element with selector whose text content matches pattern, and then focuses it. If there's no element matching selector, or the element's text content doesn't match pattern, nothing to do.

        driver.clickTextMatches("button", "submit")
        Parameters:
        selector -
        • A selector of an element to focus. If there are multiple elements satisfying the selector, the first will be focused.

        pattern - The pattern to match the text content.
        count - The number of times to click.
      • clickMatches

         Unit clickMatches(String selector, String attrName, String pattern, Integer count)

        This method clicks an element with selector whose attribute name is attrName and value matches pattern, and then focuses it. If there's no element matching selector, or the element has no attribute attrName, or the element's attribute value doesn't match pattern, nothing to do.

        driver.clickAttributeMatches("button", "type", "submit")
        Parameters:
        selector -
        • A selector of an element to focus. If there are multiple elements satisfying the selector, the first will be focused.

        attrName - The attribute name to match.
        pattern - The pattern to match the text content.
        count - The number of times to click.
      • check

         Unit check(String selector)

        This method check an element with selector. If there's no element matching selector, nothing to do.

        Parameters:
        selector -
        • A selector of an element to check. If there are multiple elements satisfying the selector, the first will be checked.

      • uncheck

         Unit uncheck(String selector)

        This method uncheck an element with selector. If there's no element matching selector, nothing to do.

        Parameters:
        selector -
        • A selector of an element to uncheck. If there are multiple elements satisfying the selector, the first will be focused.

      • waitForSelector

         Duration waitForSelector(String selector)

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

        val remainingTime = driver.waitForSelector("h2.title")
        Parameters:
        selector - The selector of the element to wait for.
        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. 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:
        action - The action to execute when the element is not found.
      • waitForNavigation

         Duration waitForNavigation(String oldUrl)

        Wait until the current url changes or timeout.

        val url = "https://www.example.com"
        driver.navigateTo(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.

        val timeout = Duration.ofSeconds(30)
        val url = "https://www.example.com"
        driver.navigateTo(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.

        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.

        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.

        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, which 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, which means, the same headers and cookies.

        Parameters:
        url - The URL to load.
        Returns:

        The network resource response.