butterbee/node
The node module contains functions to work with DOM nodes
Usage
In your tests, call
get,
do,
get_all, or
do_all
to perform an action on a node. These function expect a parameter action
that is the action to perform. possible actions are listed in this module and in the
action module.
Example
let text =
driver
|> butterbee.goto("https://gleam.run/")
|> get.node(by.css("a.logo"))
// perform an action on the node, without updating the state
|> node.do(action.click(key.LeftClick))
// get the text of the node, the state is updated with the result of the action
|> node.get(node.text())
Performing actions on nodes directly is useful for one-off situations, but if you want to make your tests more reusable, its recommended to use page modules.
Values
pub fn do(
driver: webdriver.WebDriver(remote_value.NodeRemoteValue),
action: fn(webdriver.WebDriver(remote_value.NodeRemoteValue)) -> webdriver.WebDriver(
new_state,
),
) -> webdriver.WebDriver(remote_value.NodeRemoteValue)
Perform an action on a node, without updating the state of the driver
pub fn do_all(
driver: webdriver.WebDriver(List(remote_value.NodeRemoteValue)),
action: fn(
webdriver.WebDriver(List(remote_value.NodeRemoteValue)),
) -> webdriver.WebDriver(new_state),
) -> webdriver.WebDriver(List(remote_value.NodeRemoteValue))
Perform an action on a list of nodes, without updating the state of the driver
pub fn get(
driver: webdriver.WebDriver(remote_value.NodeRemoteValue),
action: fn(webdriver.WebDriver(remote_value.NodeRemoteValue)) -> webdriver.WebDriver(
new_state,
),
) -> webdriver.WebDriver(new_state)
Perform an action on a node, updating the state with the result of the action
pub fn get_all(
driver: webdriver.WebDriver(List(remote_value.NodeRemoteValue)),
action: fn(
webdriver.WebDriver(List(remote_value.NodeRemoteValue)),
) -> webdriver.WebDriver(new_state),
) -> webdriver.WebDriver(new_state)
Perform an action on a list of nodes, updating the state with the result of the action
pub fn has_attribute(
attribute: String,
) -> fn(webdriver.WebDriver(remote_value.NodeRemoteValue)) -> webdriver.WebDriver(
Bool,
)
Check if a node has an attribute.
pub fn inner_text() -> fn(
webdriver.WebDriver(remote_value.NodeRemoteValue),
) -> webdriver.WebDriver(String)
Get the inner text of a node, returns an empty string if no text is found.
pub fn inner_texts() -> fn(
webdriver.WebDriver(List(remote_value.NodeRemoteValue)),
) -> webdriver.WebDriver(List(String))
Get the inner text of a list of nodes, returns an empty string if no text is found.
pub fn scroll_into_view() -> fn(
webdriver.WebDriver(remote_value.NodeRemoteValue),
) -> webdriver.WebDriver(evaluate_result.EvaluateResult)
Scroll a node into view.
pub fn select_option(
option: String,
) -> fn(webdriver.WebDriver(remote_value.NodeRemoteValue)) -> webdriver.WebDriver(
remote_value.NodeRemoteValue,
)
Selects the value of a select element based on the inner text of one of its options.
pub fn selected_text() -> fn(
webdriver.WebDriver(remote_value.NodeRemoteValue),
) -> webdriver.WebDriver(String)
Gets the inner text of the selected option of a select element.
pub fn set_attribute(
attribute: String,
value: String,
) -> fn(webdriver.WebDriver(remote_value.NodeRemoteValue)) -> webdriver.WebDriver(
String,
)
Set an attribute of a node.
pub fn set_value(
value: String,
) -> fn(webdriver.WebDriver(remote_value.NodeRemoteValue)) -> webdriver.WebDriver(
String,
)
Set the value of a node. Useful for setting text fields.
pub fn text() -> fn(
webdriver.WebDriver(remote_value.NodeRemoteValue),
) -> webdriver.WebDriver(String)
Get text from a node, tries different methods to get the text from a node.
First tries textContent, then innerText, then value.
Returns “null” if no text is found.
pub fn texts() -> fn(
webdriver.WebDriver(List(remote_value.NodeRemoteValue)),
) -> webdriver.WebDriver(List(String))
Get text from a list of nodes, tries different methods to get the text from a node.
First tries textContent, then innerText, then value.
Returns null if no text is found.
pub fn value() -> fn(
webdriver.WebDriver(remote_value.NodeRemoteValue),
) -> webdriver.WebDriver(String)
Get the value of a node.
pub fn values() -> fn(
webdriver.WebDriver(List(remote_value.NodeRemoteValue)),
) -> webdriver.WebDriver(List(String))
Get the value of a list of nodes.