This class aims to launch Chromium or Chrome in headless mode. It possesses methods to manage connections to headless Chromium/Chrome using the Chrome Debugging Protocol.
remote <- Chrome$new(bin = NULL, debug_port = 9222L, local = FALSE, extra_args = NULL, headless = TRUE, retry_delay = 0.2, max_attempts = 15L) remote$connect(callback = NULL) remote$listConnections() remote$closeConnections(callback = NULL) remote$version() remote$user_agent remote$close(async = FALSE) remote$view() remote$is_alive()
remote: Chrome object representing a remote instance of headless
Chromium/Chrome.
bin: Character scalar, the path to Chromium or Chrome executable.
If not provided, crrri will try to find the chrome binary itself using
find_chrome_binary(). You can set a path in HEADLESS_CHROME environment
variable to indicate where it is located.
debug_port: Integer scalar, the Chromium/Chrome remote debugging port.
Note that headless Chromium/Chrome will be available at
http://localhost:<debug_port>.
local: Logical scalar, indicating whether the local version of the
protocol (embedded in crrri) must be used or the protocol must be
fetched remotely.
extra_args: Character vector, extra command line arguments passed to
Chromium/Chrome. You can know more about command line flags (or switches)
from chromium developers
headless: Logical scalar, indicating whether Chromium/Chrome is launched
in headless mode.
retry_delay: Number, delay in seconds between two successive tries to
connect to headless Chromium/Chrome.
max_attempts: Integer scalar, number of tries to connect to headless
Chromium/Chrome.
callback: Function with one argument.
async: Does the function return a promise?
$new() opens a new headless Chromium/Chrome. You can deactivate verbose
from chrome process launching byt setting option crrri.verbose to FALSE.
$connect(callback = NULL) connects the R session to the remote instance of
headless Chromium/Chrome. The returned value depends on the value of the
callback argument. When callback is a function, the returned value is a
connection object. When callback is NULL the returned value is a promise
which fulfills once R is connected to the remote instance of Chromium/Chrome.
Once fulfilled, the value of this promise is the connection object.
$listConnections() returns a list of the connection objects succesfully
created using the $connect() method.
$closeConnections(callback = NULL) closes all the connections created using the
$connect() method. If callback is NULL, it returns a promise which
fulfills when all the connections are closed: once fulfilled, its value is the
remote object.
If callback is not NULL, it returns the remote object. In this case,
callback is called when all the connections are closed and the remote object is
passed to this function as the argument.
$version() executes the DevTools Version method. It returns a list of
informations available at http://localhost:<debug_port>/json/version.
$user_agent returns a character scalar with the User Agent of the
headless Chromium/Chrome.
$close(async = FALSE) closes the remote instance of headless
Chromium/Chrome. If async is FALSE this method returns the remote
object invisibly. Is async is TRUE, a promise is returned. This promise
fulfills when Chromium/Chrome is closed. Once fulfilled, its value is the
remote object.
$view() opens a visible Chromium/Chrome browser at
http://localhost:<debug_port>. This is useful to 'see' the headless
Chromium/Chrome instance. Returns the process of the visible browser.
$is_alive() checks if the remote instance is alive. Returns a logical
scalar.
$listTargets() returns a list with information about tabs.
if (FALSE) { remote <- Chrome$new() remote$connect() %...>% (function(client) { Page <- client$Page Runtime <- client$Runtime Page$enable() %...>% { Page$navigate(url = 'http://r-project.org') } %...>% { Page$loadEventFired() } %...>% { Runtime$evaluate( expression = 'document.documentElement.outerHTML' ) } %...>% (function(result) { cat(result$result$value, "\n") }) }) %...!% { cat("Error:", .$message, "\n") } %>% promises::finally(~ remote$close()) }