Scroll to navigation

Chrome::DevToolsProtocol::Target(3pm) User Contributed Perl Documentation Chrome::DevToolsProtocol::Target(3pm)

NAME

Chrome::DevToolsProtocol::Target - wrapper for talking to a page in a Target

SYNOPSIS

    # Usually, WWW::Mechanize::Chrome automatically creates a driver for you
    my $driver = Chrome::DevToolsProtocol::Target->new(
        transport => $target,
    );
    $driver->connect( new_tab => 1 )->get

METHODS

"->new( %args )"

    my $driver = Chrome::DevToolsProtocol::Target->new(
        transport => $target,
        auto_close => 0,
        error_handler => sub {
            # Reraise the error
            croak $_[1]
        },
    );

These members can mostly be set through the constructor arguments:

The JSON decoder used
Which tab to reuse (if any)
Close the tab when the object goes out of scope
A premade Log::Log4perl object to act as logger
If launching Chrome in app mode, connect to this page

EVENTS

A callback invoked for every message
The event-loop specific transport backend

"->future"

    my $f = $driver->future();

Returns a backend-specific generic future

"->endpoint"

    my $url = $driver->endpoint();

Returns the URL endpoint to talk to for the connected tab

"->add_listener"

    my $l = $driver->add_listener(
        'Page.domContentEventFired',
        sub {
            warn "The DOMContent event was fired";
        },
    );
    # ...
    undef $l; # stop listening

Adds a callback for the given event name. The callback will be removed once the return value goes out of scope.

"->remove_listener"

    $driver->remove_listener($l);

Explicitly remove a listener.

"->log"

    $driver->log('debug', "Warbling doodads", { doodad => 'this' } );

Log a message

"->connect"

    my $f = $driver->connect()->get;

Asynchronously connect to the Chrome browser, returning a Future.

"->close"

    $driver->close();

Shut down the connection to our tab and close it.

"->sleep"

    $driver->sleep(0.2)->get;

Sleep for the amount of seconds in an event-loop compatible way

"->one_shot"

    my $f = $driver->one_shot('Page.domContentEventFired')->get;

Returns a future that resolves when the event is received

"$chrome->json_get"

    my $data = $driver->json_get( 'version' )->get;

Requests an URL and returns decoded JSON from the future

"$chrome->version_info"

    print $chrome->version_info->get->{"protocolVersion"};

"$chrome->protocol_version"

    print $chrome->protocol_version->get;

"$chrome->send_packet"

  $chrome->send_packet('Page.handleJavaScriptDialog',
      accept => JSON::true,
  );

Sends a JSON packet to the remote end

"$chrome->send_message"

  my $future = $chrome->send_message('DOM.querySelectorAll',
      selector => 'p',
      nodeId => $node,
  );
  my $nodes = $future->get;

This function expects a response. The future will not be resolved until Chrome has sent a response to this query.

"$chrome->callFunctionOn"

"$chrome->evaluate"

"$chrome->eval"

"$chrome->get_domains"

"$chrome->list_tabs"

  my @tabs = $chrome->list_tabs->get();

"$chrome->new_tab"

    my $new_tab = $chrome->new_tab('https://www.google.com')->get;

"$chrome->activate_tab"

    $chrome->activate_tab( $tab )->get

Brings the tab to the foreground of the application

"$target->getTargetInfo"

Returns information about the current target

"$target->info"

Returns information about the current target

"$target->title"

Returns the title of the current target

"$target->getVersion"

Returns information about the Chrome instance we are connected to.

"$target->createTarget"

    my $info = $chrome->createTarget(
        url => 'about:blank',
        width => 1280,
        height => 800,
        newWindow => JSON::false,
        background => JSON::false,
    )->get;
    print $info->{targetId};

Creates a new target

"$target->attach"

    $target->attach();

Attaches to the target set up in "targetId" and "sessionId". If a targetId is given, attaches to it and remembers the value.

SEE ALSO

The unofficial Chrome debugger API documentation at <https://github.com/buggerjs/bugger-daemon/blob/master/README.md#api>

Chrome DevTools at <https://chromedevtools.github.io/devtools-protocol/1-2>

REPOSITORY

The public repository of this module is <https://github.com/Corion/www-mechanize-chrome>.

SUPPORT

The public support forum of this module is <https://perlmonks.org/>.

BUG TRACKER

Please report bugs in this module via the Github bug queue at <https://github.com/Corion/WWW-Mechanize-Chrome/issues>

AUTHOR

Max Maischein "corion@cpan.org"

COPYRIGHT (c)

Copyright 2010-2024 by Max Maischein "corion@cpan.org".

LICENSE

This module is released under the same terms as Perl itself.

2026-02-25 perl v5.40.1