ShadowRoot {selenium} | R Documentation |
Create a shadow root
Description
A shadow DOM is a self-contained DOM tree, contained within another DOM tree. A shadow root is an element that contains a DOM subtree. This class represents a shadow root object, allowing you to select elements within the shadow root.
Public fields
id
The id of the shadow root.
Methods
Public methods
Method new()
Initialize a new ShadowRoot
object. This should not be called
manually: instead use WebElement$shadow_root(), or
SeleniumSession$create_shadow_root().
Usage
ShadowRoot$new(session_id, req, verbose, id)
Arguments
session_id
The id of the session.
req, verbose
Private fields of a SeleniumSession object.
id
The id of the shadow root.
Returns
A ShadowRoot
object.
Examples
\dontrun{ session <- SeleniumSession$new() # Let's create our own Shadow Root using JavaScript session$execute_script(" const div = document.createElement('div'); document.body.appendChild(div); div.attachShadow({mode: 'open'}); ") element <- session$find_element(using = "css selector", value = "div") element$shadow_root() session$close() }
Method find_element()
Find an element in the shadow root.
Usage
ShadowRoot$find_element( using = c("css selector", "xpath", "tag name", "link text", "partial link text"), value, request_body = NULL, timeout = 20 )
Arguments
using
The type of selector to use.
value
The value of the selector: a string.
request_body
A list of request body parameters to pass to the Selenium server, overriding the default body of the web request
timeout
How long to wait for a request to recieve a response before throwing an error.
Returns
A WebElement object.
Examples
\dontrun{ session <- SeleniumSession$new() # Let's create our own Shadow Root using JavaScript session$execute_script(" const div = document.createElement('div'); document.body.appendChild(div); const shadowRoot = div.attachShadow({mode: 'open'}); const span = document.createElement('span'); span.textContent = 'Hello'; shadowRoot.appendChild(span); ") element <- session$find_element(using = "css selector", value = "div") shadow_root <- element$shadow_root() shadow_root$find_element(using = "css selector", value = "span") session$close() }
Method find_elements()
Find all elements in a shadow root matching a selector.
Usage
ShadowRoot$find_elements( using = c("css selector", "xpath", "tag name", "link text", "partial link text"), value, request_body = NULL, timeout = 20 )
Arguments
using
The type of selector to use.
value
The value of the selector: a string.
request_body
A list of request body parameters to pass to the Selenium server, overriding the default body of the web request
timeout
How long to wait for a request to recieve a response before throwing an error.
Returns
A list of WebElement objects.
Examples
\dontrun{ session <- SeleniumSession$new() # Let's create our own Shadow Root using JavaScript session$execute_script(" const div = document.createElement('div'); document.body.appendChild(div); const shadowRoot = div.attachShadow({mode: 'open'}); const span = document.createElement('span'); span.textContent = 'Hello'; shadowRoot.appendChild(span); const p = document.createElement('p'); p.textContent = 'Me too!'; shadowRoot.appendChild(p); ") element <- session$find_element(using = "css selector", value = "div") shadow_root <- element$shadow_root() shadow_root$find_elements(using = "css selector", value = "*") session$close() }
Method toJSON()
Convert an element to JSON. This is used by SeleniumSession$execute_script().
Usage
ShadowRoot$toJSON()
Returns
A list, which can then be converted to JSON using
jsonlite::toJSON()
.
Examples
\dontrun{ session <- SeleniumSession$new() # Let's create our own Shadow Root using JavaScript session$execute_script(" const div = document.createElement('div'); document.body.appendChild(div); div.attachShadow({mode: 'open'}); ") element <- session$find_element(using = "css selector", value = "div") shadow_root <- element$shadow_root() result <- shadow_root$toJSON() result jsonlite::toJSON(result, auto_unbox = TRUE) session$close() }
Method clone()
The objects of this class are cloneable with this method.
Usage
ShadowRoot$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
## ------------------------------------------------
## Method `ShadowRoot$new`
## ------------------------------------------------
## Not run:
session <- SeleniumSession$new()
# Let's create our own Shadow Root using JavaScript
session$execute_script("
const div = document.createElement('div');
document.body.appendChild(div);
div.attachShadow({mode: 'open'});
")
element <- session$find_element(using = "css selector", value = "div")
element$shadow_root()
session$close()
## End(Not run)
## ------------------------------------------------
## Method `ShadowRoot$find_element`
## ------------------------------------------------
## Not run:
session <- SeleniumSession$new()
# Let's create our own Shadow Root using JavaScript
session$execute_script("
const div = document.createElement('div');
document.body.appendChild(div);
const shadowRoot = div.attachShadow({mode: 'open'});
const span = document.createElement('span');
span.textContent = 'Hello';
shadowRoot.appendChild(span);
")
element <- session$find_element(using = "css selector", value = "div")
shadow_root <- element$shadow_root()
shadow_root$find_element(using = "css selector", value = "span")
session$close()
## End(Not run)
## ------------------------------------------------
## Method `ShadowRoot$find_elements`
## ------------------------------------------------
## Not run:
session <- SeleniumSession$new()
# Let's create our own Shadow Root using JavaScript
session$execute_script("
const div = document.createElement('div');
document.body.appendChild(div);
const shadowRoot = div.attachShadow({mode: 'open'});
const span = document.createElement('span');
span.textContent = 'Hello';
shadowRoot.appendChild(span);
const p = document.createElement('p');
p.textContent = 'Me too!';
shadowRoot.appendChild(p);
")
element <- session$find_element(using = "css selector", value = "div")
shadow_root <- element$shadow_root()
shadow_root$find_elements(using = "css selector", value = "*")
session$close()
## End(Not run)
## ------------------------------------------------
## Method `ShadowRoot$toJSON`
## ------------------------------------------------
## Not run:
session <- SeleniumSession$new()
# Let's create our own Shadow Root using JavaScript
session$execute_script("
const div = document.createElement('div');
document.body.appendChild(div);
div.attachShadow({mode: 'open'});
")
element <- session$find_element(using = "css selector", value = "div")
shadow_root <- element$shadow_root()
result <- shadow_root$toJSON()
result
jsonlite::toJSON(result, auto_unbox = TRUE)
session$close()
## End(Not run)