Class Target


  • public class Target
    extends java.lang.Object

    This class was built using the Chrome Remote Dev-Tools A.P.I., which is specified by two JSON-RPC Files. These files were obtained from the Chrome Dev Tools Protocol Git Hub Page, which has a "Tip of Tree" (the latest) API-Specification Page Here: JSON-RPC Protocol Specification.

    These files were converted into this Java-Browser (CDP) Library. The intention is to have them function in a similar fasion to the Node.js Tool known as 'Puppeteer', Microsoft's 'Playwright' and of course the Main-Stay 'Selenium.' The Java-HTML JAR Library merely implements the Java Types & Commands defined by Google's DevTools Protocol.

    🧠 View the Google CDP API:

    Supports additional targets discovery and allows to attach to them.

    The top-level description and explanation for this class (this comment, at the top this Java-Doc Page) is repeated, verbatim, across all of the domain classes which comprise Google's CDP API.

    This class is intended to be used with a Browser Instance

    These methods have been tested, to some degree, using Google Chrome. In order to use this class you must start a web-browser instance and make a connection to the browser using a Remote Debugging Port. Google-Corporation is the developer of this API, but any browser which accepts a Remote Debug Port Connection over Web-Sockets.

    Google-Chrome was used during the development process of the classes in this particular package. Lately, it has been asserted Microsoft has switched to using the Chrome Browser-Engine for its Microsoft Edge Internal Code-Base. Therefore, there may some functionality available when running the methods in this class with Microsoft-Edge.

    Check whether the your Web-Browser will allow itself to be driven by the Web-Socket RDP-Port 9223. See the examples available in package Torello.Browser to undertand how to build a PageConn and BrowserConn Web-Socket Connection, and how to build a WebSocketSender instance in order to execute the methods in this class.


    Web-Socket & JSON API:   
    Every one of the methods that reside in this class are designed to do nothing more than:

    1. Accept Parameters from the User, and "Marshall Them" into a Valid JSON-Request
    2. Transmit the Marshalled Request-JSON to a Headless Web-Browser over a Web-Socket Connection
    3. Receive BOTH that Command-Results AND any Browser Event-Firings from the Web-Socket
    4. Parse JSON Method-Results and Browser-Event Firings, and Subsequently Convert them to Standard Java-Types
    5. Report these Method-Results and Browser-Events to the User via a User-Registered, Event-Listener (Events) or a Promise Object (Command Responses / Results)

    Unlike the bulk of the Java HTML JAR Library, there is very little native Java-Code, and very little testing that may be done on any of the classes & methods in this package. The code inside these classes does nothing more than marshall-and-unmarshall Java-Types into Json-Requests (and vice-versa). The Java-Script & Browser modules inside of a Google-Chrome instance are, theoretically, handling these requests, and returning their results (or events) over the Web-Socket Connection.

    It has been asserted (by Google Chrome Developers) that some of these methods are only "partially working" or "experimental".


    Asking Chat-GPT for Help:   
    The LLM otherwise known as "Chat-GPT" does, indeed, have an expert level of knowledge about the "Remote DevTools Protocol". The API that the Chrome DevTools Protocl (CDP) exports is extremely well understood by the LLM, and generally I have found that Chat-GPT understands (by 2 or 3 orders of magnitude) better what my Auto-Generated JSON-Wrappers can do in controlling a Web-Browser than I could ever possibly hope to understand.

    Though not available today, there will soon be an automatically downloadable Token-Stream (AI Embeddings) BUTTON available on my Java-Doc Pages that should hopefully make it extremely easy to post my code-base, RAG Style, to Chat-GPT and other LLM's when 'interogating' them. Presently, because my "Get Token Stream Button" does not exist yet on any of my pages, what you can do is copy-and-paste any Method-Signature from any one of these pages and then ask Chat-GPT to explain what that Browser or Java-Script Function is actually doing. It is very likely to give you some pretty neat answers.

    I have found that every single one of the Domains, Types & Events which are offered by the CDP Protocol (though not documented very well by Google), are perfectly understood by the A.I. LLM - literally to the point where it does know (much better than I ever could) what my own code base actually does!

    Try it out, it's a lot of fun. Note that this package and these classes were originally developed solely to be able to execute the Java-Script that a browser executes when visiting a Web-Site. Complete HTML-Page Content can be scraped (using the HTML Data-Scraping Tools in Java-HTML) off of Web-Sites that have dynamic / Java-Script Generated Content.


    Conspicuous Boxed-Types Usage:
    You may notice that there are many methods that have parameters which accept, for instance, an Integer, instead of a primitive int. Just to remind the readiner, in Java Programs a Boxed Type is a standard Java-Primitive which has been converted into an Object-Reference. The use of Boxed-Types in this code base is an easy-and-fast-way to allow for the concept of "Optional Parameters" or "Optional Field Value."

    Whenever you see a method that accepts an Integer, the reason for this Parameter-Type choice is actually to allow a user to pass 'null' to it. This is a simple way to ELIDE passing any value at all to parameters which Google-Chrome would otherwise assert are "Optional." Whenever you pass 'null' to a Boxed-Types in this class, the Json-Processor will simply eliminate that Object-Property from the command altogether; and the browser will simply not receive any value for that parameter when that command is invoked.

    The Java Language Specification does not have an easy or well defined means of accepting optional method parameters; so Boxed-Types and 'null' are utilized here. Note that 'null' may be passed to any Command Method-Parameter that is listed as Optional on the Java-Doc Page description for that parameter.



    Stateless Class:
    This class neither contains any program-state, nor can it be instantiated. The @StaticFunctional Annotation may also be called 'The Spaghetti Report'. Static-Functional classes are, essentially, C-Styled Files, without any constructors or non-static member fields. It is a concept very similar to the Java-Bean's @Stateless Annotation.

    • 1 Constructor(s), 1 declared private, zero-argument constructor
    • 19 Method(s), 19 declared static
    • 4 Field(s), 4 declared static, 4 declared final


    • Nested Class Summary

       
      Type Nested Classes: Types / Classes that Are Used & Exported by this Domain
      Modifier and Type Class Description
      static class  Target.FilterEntry
      A filter used by target query/discovery/auto-attach operations.
      static class  Target.RemoteLocation
      [No Description Provided by Google]
      static class  Target.TargetInfo
      [No Description Provided by Google]
       
      Event Nested Classes: Browser Events, as Java Inner Classes, Which are Fired by this Domain
      Modifier and Type Class Description
      static class  Target.attachedToTarget
      Issued when attached to target because of auto-attach or attachToTarget command.
      static class  Target.detachedFromTarget
      Issued when detached from target for any reason (including detachFromTarget command).
      static class  Target.receivedMessageFromTarget
      Notifies about a new protocol message received from the session (as reported in attachedToTarget event).
      static class  Target.targetCrashed
      Issued when a target has crashed.
      static class  Target.targetCreated
      Issued when a possible inspection target is created.
      static class  Target.targetDestroyed
      Issued when a target is destroyed.
      static class  Target.targetInfoChanged
      Issued when some information about a target has changed.
    • Field Summary

       
      Enumerated Strings: Like Java 'enum' Types, but Converted to Read-Only String-Lists
      Modifier and Type Field Description
      static ReadOnlyList<String> WindowState
      The state of the target window.
       
      Eliminated Types: Removed CDP Types which Have Been Re-Mapped to Basic Java String Constants
      Modifier and Type Field Description
      static String SessionID
      Unique identifier of attached debugging session.
      static String TargetFilter
      The entries in TargetFilter are matched sequentially against targets and the first entry that matches determines if the target is included or not, depending on the value of exclude field in the entry.
      static String TargetID
      [No Description Provided by Google]
    • Method Summary

       
      Target Domain Commands
      Script Returns Modifier and Type Method
      Void static Script<> activateTarget​(String targetId)
      Activates (focuses) the target.
      String static Script<> attachToBrowserTarget()
      Attaches to the browser target, only uses flat sessionId mode.
      String static Script<> attachToTarget​(String targetId, Boolean flatten)
      Attaches to the target with given id.
      Void static Script<> autoAttachRelated​(String targetId, boolean waitForDebuggerOnStart, Target.FilterEntry[] filter)
      Adds the specified target to the list of targets that will be monitored for any related target creation (such as child frames, child workers and new versions of service worker) and reported through attachedToTarget.
      Boolean static Script<> closeTarget​(String targetId)
      Closes the target.
      String static Script<> createBrowserContext​(Boolean disposeOnDetach, String proxyServer, String proxyBypassList, String[] originsWithUniversalNetworkAccess)
      Creates a new empty BrowserContext.
      String static Script<> createTarget​(String url, Integer left, Integer top, Integer width, Integer height, String windowState, String browserContextId, Boolean enableBeginFrameControl, Boolean newWindow, Boolean background, Boolean forTab, Boolean hidden)
      Creates a new page.
      Void static Script<> detachFromTarget​(String sessionId, String targetId)
      Detaches session with given id.
      Void static Script<> disposeBrowserContext​(String browserContextId)
      Deletes a BrowserContext.
      Void static Script<> exposeDevToolsProtocol​(String targetId, String bindingName, Boolean inheritPermissions)
      Inject object to the target's main frame that provides a communication channel with browser target.
      String[] static Script<> getBrowserContexts()
      Returns all browser contexts created with Target.createBrowserContext method.
      Target.TargetInfo static Script<> getTargetInfo​(String targetId)
      Returns information about a target.
      Target.TargetInfo[] static Script<> getTargets​(Target.FilterEntry[] filter)
      Retrieves a list of available targets.
      String static Script<> openDevTools​(String targetId)
      Opens a DevTools window for the target.
      Void static Script<> sendMessageToTarget​(String message, String sessionId, String targetId)
      Sends protocol message over session with given id.
      Void static Script<> setAutoAttach​(boolean autoAttach, boolean waitForDebuggerOnStart, Boolean flatten, Target.FilterEntry[] filter)
      Controls whether to automatically attach to new targets which are considered to be directly related to this one (for example, iframes or workers).
      Void static Script<> setDiscoverTargets​(boolean discover, Target.FilterEntry[] filter)
      Controls whether to discover available targets and notify via targetCreated/targetInfoChanged/targetDestroyed events.
      Void static Script<> setRemoteLocations​(Target.RemoteLocation[] locations)
      Enables target discovery for the specified locations, when setDiscoverTargets was set to true.
       
      Target Domain CommandBuilder Methods
      Modifier and Type Method Description
      static CommandBuilder
      <String>
      createTarget()
      Creates a buider for conveniently assigning parameters to this method.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • SessionID

        🡇     🗕  🗗  🗖
        public static final java.lang.String SessionID
        Unique identifier of attached debugging session.

        The Type SessionID has been eliminated, because it is a direct mapping to a basic Java-Type; it has no additional fields, or other distinguishing properties. Instead, this CDP defined type has been relegated to a simple String Constant, for documentation & reference purposes only.

        The code which is generated which employs this type replaces its use with the Standard Java-Type: String

        Eliminated Type
        See Also:
        Constant Field Values
      • TargetFilter

        🡅  🡇     🗕  🗗  🗖
        public static final java.lang.String TargetFilter
        The entries in TargetFilter are matched sequentially against targets and the first entry that matches determines if the target is included or not, depending on the value of exclude field in the entry. If filter is not specified, the one assumed is [{type: "browser", exclude: true}, {type: "tab", exclude: true}, {}] (i.e. include everything but browser and tab).
        EXPERIMENTAL

        The Type TargetFilter has been eliminated, because it is a direct mapping to a basic Java-Type; it has no additional fields, or other distinguishing properties. Instead, this CDP defined type has been relegated to a simple String Constant, for documentation & reference purposes only.

        The code which is generated which employs this type replaces its use with the Standard Java-Type: FilterEntry[]

        Eliminated Type
        See Also:
        Constant Field Values
      • TargetID

        🡅  🡇     🗕  🗗  🗖
        public static final java.lang.String TargetID
        [No Description Provided by Google]

        The Type TargetID has been eliminated, because it is a direct mapping to a basic Java-Type; it has no additional fields, or other distinguishing properties. Instead, this CDP defined type has been relegated to a simple String Constant, for documentation & reference purposes only.

        The code which is generated which employs this type replaces its use with the Standard Java-Type: String

        Eliminated Type
        See Also:
        Constant Field Values
    • Method Detail

      • activateTarget

        🡅  🡇     🗕  🗗  🗖
        public static Script<java.lang.Void> activateTarget​
                    (java.lang.String targetId)
        
        Activates (focuses) the target.
        Parameters:
        targetId - -
        Returns:
        An instance of Script<Void>

        This Script instance must be executed before the browser receives the invocation-request.

        This Browser-Function does not have a return-value. You may choose to await the Promise<Void> to ensure that the Browser Function has run to completion.
      • attachToBrowserTarget

        🡅  🡇     🗕  🗗  🗖
        public static Script<java.lang.String> attachToBrowserTarget()
        Attaches to the browser target, only uses flat sessionId mode.
        EXPERIMENTAL
        Returns:
        An instance of Script<String>

        This script may be executed, using Script.exec, and afterwards, a Promise <String> will be returned

        Finally, the Promise may be awaited, using Promise.await(), and the returned result of this Browser Function may be retrieved.

        This Browser Function's Promise returns: String (sessionId)
        Id assigned to the session.
      • attachToTarget

        🡅  🡇     🗕  🗗  🗖
        public static Script<java.lang.String> attachToTarget​
                    (java.lang.String targetId,
                     java.lang.Boolean flatten)
        
        Attaches to the target with given id.
        Parameters:
        targetId - -
        flatten - Enables "flat" access to the session via specifying sessionId attribute in the commands. We plan to make this the default, deprecate non-flattened mode, and eventually retire it. See crbug.com/991325.
        OPTIONAL
        Returns:
        An instance of Script<String>

        This script may be executed, using Script.exec, and afterwards, a Promise <String> will be returned

        Finally, the Promise may be awaited, using Promise.await(), and the returned result of this Browser Function may be retrieved.

        This Browser Function's Promise returns: String (sessionId)
        Id assigned to the session.
      • autoAttachRelated

        🡅  🡇     🗕  🗗  🗖
        public static Script<java.lang.Void> autoAttachRelated​
                    (java.lang.String targetId,
                     boolean waitForDebuggerOnStart,
                     Target.FilterEntry[] filter)
        
        Adds the specified target to the list of targets that will be monitored for any related target creation (such as child frames, child workers and new versions of service worker) and reported through attachedToTarget. The specified target is also auto-attached. This cancels the effect of any previous setAutoAttach and is also cancelled by subsequent setAutoAttach. Only available at the Browser target.
        EXPERIMENTAL
        Parameters:
        targetId - -
        waitForDebuggerOnStart - Whether to pause new targets when attaching to them. Use RunTime.runIfWaitingForDebugger to run paused targets.
        filter - Only targets matching filter will be attached.
        OPTIONALEXPERIMENTAL
        Returns:
        An instance of Script<Void>

        This Script instance must be executed before the browser receives the invocation-request.

        This Browser-Function does not have a return-value. You may choose to await the Promise<Void> to ensure that the Browser Function has run to completion.
      • closeTarget

        🡅  🡇     🗕  🗗  🗖
        public static Script<java.lang.Boolean> closeTarget​
                    (java.lang.String targetId)
        
        Closes the target. If the target is a page that gets closed too.
        Parameters:
        targetId - -
        Returns:
        An instance of Script<Boolean>

        This script may be executed, using Script.exec, and afterwards, a Promise <Boolean> will be returned

        Finally, the Promise may be awaited, using Promise.await(), and the returned result of this Browser Function may be retrieved.

        This Browser Function's Promise returns: Boolean (success)
        Always set to true. If an error occurs, the response indicates protocol error.
      • createBrowserContext

        🡅  🡇     🗕  🗗  🗖
        public static Script<java.lang.String> createBrowserContext​
                    (java.lang.Boolean disposeOnDetach,
                     java.lang.String proxyServer,
                     java.lang.String proxyBypassList,
                     java.lang.String[] originsWithUniversalNetworkAccess)
        
        Creates a new empty BrowserContext. Similar to an incognito profile but you can have more than one.
        Parameters:
        disposeOnDetach - If specified, disposes this context when debugging session disconnects.
        OPTIONALEXPERIMENTAL
        proxyServer - Proxy server, similar to the one passed to --proxy-server
        OPTIONALEXPERIMENTAL
        proxyBypassList - Proxy bypass list, similar to the one passed to --proxy-bypass-list
        OPTIONALEXPERIMENTAL
        originsWithUniversalNetworkAccess - An optional list of origins to grant unlimited cross-origin access to. Parts of the URL other than those constituting origin are ignored.
        OPTIONALEXPERIMENTAL
        Returns:
        An instance of Script<String>

        This script may be executed, using Script.exec, and afterwards, a Promise <String> will be returned

        Finally, the Promise may be awaited, using Promise.await(), and the returned result of this Browser Function may be retrieved.

        This Browser Function's Promise returns: String (browserContextId)
        The id of the context created.
      • createTarget

        🡅  🡇     🗕  🗗  🗖
        public static Script<java.lang.String> createTarget​
                    (java.lang.String url,
                     java.lang.Integer left,
                     java.lang.Integer top,
                     java.lang.Integer width,
                     java.lang.Integer height,
                     java.lang.String windowState,
                     java.lang.String browserContextId,
                     java.lang.Boolean enableBeginFrameControl,
                     java.lang.Boolean newWindow,
                     java.lang.Boolean background,
                     java.lang.Boolean forTab,
                     java.lang.Boolean hidden)
        
        Creates a new page.

        👍 Because of the sheer number of input parameters to this method, there is a a CommandBuilder variant to this method which may be invoked instead.

        Please View: createTarget()
        Parameters:
        url - The initial URL the page will be navigated to. An empty string indicates about:blank.
        left - Frame left origin in DIP (requires newWindow to be true or headless shell).
        OPTIONALEXPERIMENTAL
        top - Frame top origin in DIP (requires newWindow to be true or headless shell).
        OPTIONALEXPERIMENTAL
        width - Frame width in DIP (requires newWindow to be true or headless shell).
        OPTIONAL
        height - Frame height in DIP (requires newWindow to be true or headless shell).
        OPTIONAL
        windowState - Frame window state (requires newWindow to be true or headless shell). Default is normal.
        OPTIONAL
        browserContextId - The browser context to create the page in.
        OPTIONALEXPERIMENTAL
        enableBeginFrameControl - Whether BeginFrames for this target will be controlled via DevTools (headless shell only, not supported on MacOS yet, false by default).
        OPTIONALEXPERIMENTAL
        newWindow - Whether to create a new Window or Tab (false by default, not supported by headless shell).
        OPTIONAL
        background - Whether to create the target in background or foreground (false by default, not supported by headless shell).
        OPTIONAL
        forTab - Whether to create the target of type "tab".
        OPTIONALEXPERIMENTAL
        hidden - Whether to create a hidden target. The hidden target is observable via protocol, but not present in the tab UI strip. Cannot be created with forTab: true, newWindow: true or background: false. The life-time of the tab is limited to the life-time of the session.
        OPTIONALEXPERIMENTAL
        Returns:
        An instance of Script<String>

        This script may be executed, using Script.exec, and afterwards, a Promise <String> will be returned

        Finally, the Promise may be awaited, using Promise.await(), and the returned result of this Browser Function may be retrieved.

        This Browser Function's Promise returns: String (targetId)
        The id of the page opened.
      • detachFromTarget

        🡅  🡇     🗕  🗗  🗖
        public static Script<java.lang.Void> detachFromTarget​
                    (java.lang.String sessionId,
                     java.lang.String targetId)
        
        Detaches session with given id.
        Parameters:
        sessionId - Session to detach.
        OPTIONAL
        targetId - Deprecated.
        OPTIONALDEPRECATED
        Returns:
        An instance of Script<Void>

        This Script instance must be executed before the browser receives the invocation-request.

        This Browser-Function does not have a return-value. You may choose to await the Promise<Void> to ensure that the Browser Function has run to completion.
      • disposeBrowserContext

        🡅  🡇     🗕  🗗  🗖
        public static Script<java.lang.Void> disposeBrowserContext​
                    (java.lang.String browserContextId)
        
        Deletes a BrowserContext. All the belonging pages will be closed without calling their beforeunload hooks.
        Parameters:
        browserContextId - -
        Returns:
        An instance of Script<Void>

        This Script instance must be executed before the browser receives the invocation-request.

        This Browser-Function does not have a return-value. You may choose to await the Promise<Void> to ensure that the Browser Function has run to completion.
      • exposeDevToolsProtocol

        🡅  🡇     🗕  🗗  🗖
        public static Script<java.lang.Void> exposeDevToolsProtocol​
                    (java.lang.String targetId,
                     java.lang.String bindingName,
                     java.lang.Boolean inheritPermissions)
        
        Inject object to the target's main frame that provides a communication channel with browser target. Injected object will be available as window[bindingName]. The object has the following API: - binding.send(json) - a method to send messages over the remote debugging protocol - binding.onmessage = json => handleMessage(json) - a callback that will be called for the protocol notifications and command responses.
        EXPERIMENTAL
        Parameters:
        targetId - -
        bindingName - Binding name, 'cdp' if not specified.
        OPTIONAL
        inheritPermissions - If true, inherits the current root session's permissions (default: false).
        OPTIONAL
        Returns:
        An instance of Script<Void>

        This Script instance must be executed before the browser receives the invocation-request.

        This Browser-Function does not have a return-value. You may choose to await the Promise<Void> to ensure that the Browser Function has run to completion.
      • getBrowserContexts

        🡅  🡇     🗕  🗗  🗖
        public static Script<java.lang.String[]> getBrowserContexts()
        Returns all browser contexts created with Target.createBrowserContext method.
        Returns:
        An instance of Script<String[]>

        This script may be executed, using Script.exec, and afterwards, a Promise <String[]> will be returned

        Finally, the Promise may be awaited, using Promise.await(), and the returned result of this Browser Function may be retrieved.

        This Browser Function's Promise returns: String[] (browserContextIds)
        An array of browser context ids.
      • openDevTools

        🡅  🡇     🗕  🗗  🗖
        public static Script<java.lang.String> openDevTools​
                    (java.lang.String targetId)
        
        Opens a DevTools window for the target.
        EXPERIMENTAL
        Parameters:
        targetId - This can be the page or tab target ID.
        Returns:
        An instance of Script<String>

        This script may be executed, using Script.exec, and afterwards, a Promise <String> will be returned

        Finally, the Promise may be awaited, using Promise.await(), and the returned result of this Browser Function may be retrieved.

        This Browser Function's Promise returns: String (targetId)
        The targetId of DevTools page target.
      • sendMessageToTarget

        🡅  🡇     🗕  🗗  🗖
        public static Script<java.lang.Void> sendMessageToTarget​
                    (java.lang.String message,
                     java.lang.String sessionId,
                     java.lang.String targetId)
        
        Sends protocol message over session with given id. Consider using flat mode instead; see commands attachToTarget, setAutoAttach, and crbug.com/991325.
        DEPRECATED
        Parameters:
        message - -
        sessionId - Identifier of the session.
        OPTIONAL
        targetId - Deprecated.
        OPTIONALDEPRECATED
        Returns:
        An instance of Script<Void>

        This Script instance must be executed before the browser receives the invocation-request.

        This Browser-Function does not have a return-value. You may choose to await the Promise<Void> to ensure that the Browser Function has run to completion.
      • setAutoAttach

        🡅  🡇     🗕  🗗  🗖
        public static Script<java.lang.Void> setAutoAttach​
                    (boolean autoAttach,
                     boolean waitForDebuggerOnStart,
                     java.lang.Boolean flatten,
                     Target.FilterEntry[] filter)
        
        Controls whether to automatically attach to new targets which are considered to be directly related to this one (for example, iframes or workers). When turned on, attaches to all existing related targets as well. When turned off, automatically detaches from all currently attached targets. This also clears all targets added by autoAttachRelated from the list of targets to watch for creation of related targets. You might want to call this recursively for auto-attached targets to attach to all available targets.
        Parameters:
        autoAttach - Whether to auto-attach to related targets.
        waitForDebuggerOnStart - Whether to pause new targets when attaching to them. Use RunTime.runIfWaitingForDebugger to run paused targets.
        flatten - Enables "flat" access to the session via specifying sessionId attribute in the commands. We plan to make this the default, deprecate non-flattened mode, and eventually retire it. See crbug.com/991325.
        OPTIONALEXPERIMENTAL
        filter - Only targets matching filter will be attached.
        OPTIONALEXPERIMENTAL
        Returns:
        An instance of Script<Void>

        This Script instance must be executed before the browser receives the invocation-request.

        This Browser-Function does not have a return-value. You may choose to await the Promise<Void> to ensure that the Browser Function has run to completion.
      • setDiscoverTargets

        🡅  🡇     🗕  🗗  🗖
        public static Script<java.lang.Void> setDiscoverTargets​
                    (boolean discover,
                     Target.FilterEntry[] filter)
        
        Controls whether to discover available targets and notify via targetCreated/targetInfoChanged/targetDestroyed events.
        Parameters:
        discover - Whether to discover available targets.
        filter - Only targets matching filter will be attached. If discover is false, filter must be omitted or empty.
        OPTIONALEXPERIMENTAL
        Returns:
        An instance of Script<Void>

        This Script instance must be executed before the browser receives the invocation-request.

        This Browser-Function does not have a return-value. You may choose to await the Promise<Void> to ensure that the Browser Function has run to completion.
      • setRemoteLocations

        🡅  🡇     🗕  🗗  🗖
        public static Script<java.lang.Void> setRemoteLocations​
                    (Target.RemoteLocation[] locations)
        
        Enables target discovery for the specified locations, when setDiscoverTargets was set to true.
        EXPERIMENTAL
        Parameters:
        locations - List of remote locations.
        Returns:
        An instance of Script<Void>

        This Script instance must be executed before the browser receives the invocation-request.

        This Browser-Function does not have a return-value. You may choose to await the Promise<Void> to ensure that the Browser Function has run to completion.