Chrome::DevToolsProtocol - asynchronous dispatcher for the DevTools protocol
# Usually, WWW::Mechanize::Chrome automatically creates a driver for you my $driver = Chrome::DevToolsProtocol->new( port => 9222, host => '127.0.0.1', auto_close => 0, error_handler => sub { # Reraise the error croak $_[1] }, ); $driver->connect( new_tab => 1 )->get
->new( %args )
my $driver = Chrome::DevToolsProtocol->new( port => 9222, host => '127.0.0.1', auto_close => 0, error_handler => sub { # Reraise the error croak $_[1] }, );
These members can mostly be set through the constructor arguments:
The hostname to connect to
The port to connect to
The JSON decoder used
The Future::HTTP instance to talk to the Chrome DevTools
Which tab to reuse (if any)
A premade Log::Log4perl object to act as logger
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 Chrome
->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->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->version_info
print $chrome->version_info->get->{"Protocol-Version"};
$chrome->protocol_version
print $chrome->protocol_version->get;
$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
$chrome->close_tab
$chrome->close_tab( $tab )->get
Closes the tab
The inofficial 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
The public repository of this module is https://github.com/Corion/www-mechanize-chrome.
The public support forum of this module is https://perlmonks.org/.
Please report bugs in this module via the RT CPAN bug queue at https://rt.cpan.org/Public/Dist/Display.html?Name=WWW-Mechanize-Chrome or via mail to www-mechanize-Chrome-Bugs@rt.cpan.org.
Max Maischein corion@cpan.org
corion@cpan.org
Copyright 2010-2018 by Max Maischein corion@cpan.org.
This module is released under the same terms as Perl itself.
To install WWW::Mechanize::Chrome, copy and paste the appropriate command in to your terminal.
cpanm
cpanm WWW::Mechanize::Chrome
CPAN shell
perl -MCPAN -e shell install WWW::Mechanize::Chrome
For more information on module installation, please visit the detailed CPAN module installation guide.