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
  |> driver.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 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.

Search Document