# create environment for Selenium driver
.govenv <- new.env()
#' Start Selenium driver
#'
#' \code{start_browser} should be run before execution of other functions in the
#' package. Selenium driver is required for both application of filters and
#' parsing results. Further documentation is available in \code{\link[RSelenium]{rsDriver}}.
#'
#' @param port Port to use
#' @param docker Specify whether instead of launching its own server,
#' Docker container is runninng and can be connected to.
#' @param browser Which browser should be used
#' \describe{
#' \item{\code{"chrome"}}{}
#' \item{\code{"firefox"}}{}
#' }
#' @param verbose Print out messages
#' @param check Check the version of Selenium and associated drivers
#' @param extraCapabilities Optional arguments (browser-specific)
#'
#' @export
start_browser <- function(port = 4445L,
docker = TRUE,
browser = c("chrome",
"firefox"),
verbose = TRUE,
check = TRUE,
extraCapabilities = list()) {
if (docker) {
message("Connecting to Docker container...")
driver <- RSelenium::remoteDriver(port = port)
driver$open()
assign("docker", docker, envir = .govenv)
assign("driver", driver, envir = .govenv)
} else {
browser <- match.arg(browser)
driver <- RSelenium::rsDriver(port = port,
browser = browser,
verbose = verbose,
check = check,
extraCapabilities = extraCapabilities)
driver[["client"]]$setTimeout(type = "page load", milliseconds = 10000)
driver[["client"]]$setTimeout(type = "script", milliseconds = 10000)
driver[["client"]]$setTimeout(type = "implicit", milliseconds = 10000)
assign("docker", FALSE, envir = .govenv)
assign("driver", driver[["client"]], envir = .govenv)
assign("server", driver[["server"]], envir = .govenv)
}
}
#' Stop Selenium driver
#'
#' @export
stop_browser <- function() {
if (exists("driver", where = .govenv)) {
message("Terminating browser...")
docker <- get("docker", envir = .govenv)
if (docker) {
.govenv$driver$closeServer()
} else {
.govenv$driver$close()
.govenv$server$stop()
}
}
}
#' Open main page of gov.UK publications
#' \url{https://www.gov.uk/government/publications}
#'
#' @export
main_page <- function() {
check_browser()
url <- paste0(BASEURL, PUBLICATIONS)
.govenv$driver$navigate(url)
}
get_title <- function() {
url <- paste0(BASEURL, PUBLICATIONS)
title <- .govenv$driver$getTitle(url)
title
}
check_browser <- function() {
if (!exists("driver", where = .govenv)) {
stop("Browser instance could not be found. Try, running start_browser() first")
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.