Create browser options to pass into the capabilities argument of
SeleniumSession$new().
Usage
chrome_options(
binary = NULL,
args = NULL,
extensions = NULL,
prefs = NULL,
...
)
firefox_options(binary = NULL, args = NULL, profile = NULL, prefs = NULL, ...)
edge_options(binary = NULL, args = NULL, extensions = NULL, prefs = NULL, ...)Arguments
- binary
Path to the browser binary.
- args
A character vector of additional arguments to pass to the browser.
- extensions
A character vector of paths to browser extension (
.crx) files. These will be base64 encoded before being passed to the browser. If you have already encoded the extensions, you can pass them usingI(). For Firefox, use a profile to load extensions.- prefs
A named list of preferences to set in the browser.
- ...
Additional options to pass to the browser.
- profile
Path to a Firefox profile directory. This will be base64 encoded before being passed to the browser.
Value
A list of browser options, with Chrome options under the name
goog:chromeOptions, Firefox options under moz:firefoxOptions, and Edge
options under ms:edgeOptions.
Details
These functions allow you to more easily translate between Selenium code in other languages (e.g. Java/Python) to R. For example, consider the following Java code, adapted from the the Selenium documentation
ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/chrome");
options.addArguments("--headless", "--disable-gpu");
options.addExtensions("/path/to/extension.crx");
options.setExperimentalOption("excludeSwitches", List.of("disable-popup-blocking"));This can be translated to R as follows:
chrome_options(
binary = "/path/to/chrome",
args = c("--headless", "--disable-gpu"),
extensions = "/path/to/extension.crx",
excludeSwitches = list("disable-popup-blocking")
)You can combine these options with non-browser specific options simply using
c().
Note that Microsoft Edge options are very similar to Chrome options, since it is based on Chromium.
See also
For more information and examples on Chrome options, see: https://developer.chrome.com/docs/chromedriver/capabilities
For Firefox options: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/firefoxOptions
For other options that affect Firefox but are not under mox:firefoxOptions,
see:
https://firefox-source-docs.mozilla.org/testing/geckodriver/Capabilities.html
For Edge options, see: https://learn.microsoft.com/en-us/microsoft-edge/webdriver-chromium/capabilities-edge-options#edgeoptions-object
Examples
# Basic options objects
chrome_options(
binary = "/path/to/chrome",
args = c("--headless", "--disable-gpu"),
detatch = TRUE, # An additional option described in the link above.
prefs = list(
"profile.default_content_setting_values.notifications" = 2
)
)
#> $`goog:chromeOptions`
#> $`goog:chromeOptions`$binary
#> [1] "/path/to/chrome"
#>
#> $`goog:chromeOptions`$args
#> $`goog:chromeOptions`$args[[1]]
#> [1] "--headless"
#>
#> $`goog:chromeOptions`$args[[2]]
#> [1] "--disable-gpu"
#>
#>
#> $`goog:chromeOptions`$prefs
#> $`goog:chromeOptions`$prefs$profile.default_content_setting_values.notifications
#> [1] 2
#>
#>
#> $`goog:chromeOptions`$detatch
#> [1] TRUE
#>
#>
firefox_options(binary = "/path/to/firefox")
#> $acceptInsecureCerts
#> [1] TRUE
#>
#> $`moz:firefoxOptions`
#> $`moz:firefoxOptions`$binary
#> [1] "/path/to/firefox"
#>
#>
#> $`moz:debuggerAddress`
#> [1] TRUE
#>
edge_options(binary = "/path/to/edge")
#> $`ms:edgeOptions`
#> $`ms:edgeOptions`$binary
#> [1] "/path/to/edge"
#>
#>
# Setting the user agent
chrome_options(args = c("--user-agent=My User Agent"))
#> $`goog:chromeOptions`
#> $`goog:chromeOptions`$args
#> $`goog:chromeOptions`$args[[1]]
#> [1] "--user-agent=My User Agent"
#>
#>
#>
edge_options(args = c("--user-agent=My User Agent"))
#> $`ms:edgeOptions`
#> $`ms:edgeOptions`$args
#> $`ms:edgeOptions`$args[[1]]
#> [1] "--user-agent=My User Agent"
#>
#>
#>
firefox_options(prefs = list(
"general.useragent.override" = "My User Agent"
))
#> $acceptInsecureCerts
#> [1] TRUE
#>
#> $`moz:firefoxOptions`
#> $`moz:firefoxOptions`$prefs
#> $`moz:firefoxOptions`$prefs$general.useragent.override
#> [1] "My User Agent"
#>
#>
#>
#> $`moz:debuggerAddress`
#> [1] TRUE
#>
# Using a proxy server
chrome_options(args = c("--proxy-server=HOST:PORT"))
#> $`goog:chromeOptions`
#> $`goog:chromeOptions`$args
#> $`goog:chromeOptions`$args[[1]]
#> [1] "--proxy-server=HOST:PORT"
#>
#>
#>
edge_options(args = c("--proxy-server=HOST:PORT"))
#> $`ms:edgeOptions`
#> $`ms:edgeOptions`$args
#> $`ms:edgeOptions`$args[[1]]
#> [1] "--proxy-server=HOST:PORT"
#>
#>
#>
PORT <- 1
firefox_options(prefs = list(
"network.proxy.type" = 1,
"network.proxy.socks" = "HOST",
"network.proxy.socks_port" = PORT,
"network.proxy.socks_remote_dns" = FALSE
))
#> $acceptInsecureCerts
#> [1] TRUE
#>
#> $`moz:firefoxOptions`
#> $`moz:firefoxOptions`$prefs
#> $`moz:firefoxOptions`$prefs$network.proxy.type
#> [1] 1
#>
#> $`moz:firefoxOptions`$prefs$network.proxy.socks
#> [1] "HOST"
#>
#> $`moz:firefoxOptions`$prefs$network.proxy.socks_port
#> [1] 1
#>
#> $`moz:firefoxOptions`$prefs$network.proxy.socks_remote_dns
#> [1] FALSE
#>
#>
#>
#> $`moz:debuggerAddress`
#> [1] TRUE
#>
# Combining with other options
browser_options <- chrome_options(binary = "/path/to/chrome")
c(browser_options, list(platformName = "Windows"))
#> $`goog:chromeOptions`
#> $`goog:chromeOptions`$binary
#> [1] "/path/to/chrome"
#>
#>
#> $platformName
#> [1] "Windows"
#>