butterbee/element

Define elements for page module using this module.

Example:

import butterbee
import butterbee/by
import butterbee/element.{type NodeList, type NodeTable}
import butterbee/webdriver.{type WebDriver}

pub fn submit_button(
  driver: WebDriver(state),
  action: fn(_) -> WebDriver(new_state),
) {
  element.define(field: by.css("button#submit"))
  |> element.perform(driver, action)
}

pub fn team_list(
  driver: WebDriver(state),
  on_element: NodeList,
  action: fn(_) -> WebDriver(new_state),
) {
  element.define_list(
    list: by.css("ul#team"),
    list_item: by.css("li"),
  )
  |> element.perform_on_list(driver, on_element, action)
}

pub fn pokemon_dropdown(
  driver: WebDriver(state),
  action: fn(_) -> WebDriver(new_state),
) {
  element.define(field: by.css("select#pokemon"))
  |> element.perform_action(driver, action)
}

pub fn pokedex_table(
  driver: WebDriver(state),
  on_element: NodeTable,
  action: fn(_) -> WebDriver(new_state),
) {
  element.define_table(
    table: by.css("table#pokedex"),
    table_row: by.css("tr"),
    table_cell: by.css("td"),
    table_width: 3,
  )
  |> element.perform_on_table(driver, on_element, action)
}

For a more complete example, see the page module guide.

Types

pub type NodeList {
  List
  Item(Int)
}

Constructors

  • List
  • Item(Int)
pub type NodeTable {
  Table
  Row(Int)
  Cell(row: Int, column: Int)
}

Constructors

  • Table
  • Row(Int)
  • Cell(row: Int, column: Int)

Values

pub fn define(field locator: locator.Locator) -> locator.Locator

Define an element for a page module.

pub fn define_list(
  list list_locator: locator.Locator,
  list_item list_item_locator: locator.Locator,
) -> #(locator.Locator, locator.Locator)

Define a list for a page module.

pub fn define_table(
  table table_locator: locator.Locator,
  table_row table_row_locator: locator.Locator,
  table_cell table_cell_locator: locator.Locator,
  table_width table_width: Int,
) -> #(locator.Locator, locator.Locator, locator.Locator, Int)

Define a table for a page module.

pub fn perform(
  locator: locator.Locator,
  driver: webdriver.WebDriver(state),
  action: fn(webdriver.WebDriver(remote_value.NodeRemoteValue)) -> webdriver.WebDriver(
    new_state,
  ),
) -> webdriver.WebDriver(new_state)

Perform an action on the defined element.

pub fn perform_on_list(
  locator: #(locator.Locator, locator.Locator),
  driver: webdriver.WebDriver(state),
  on_element: NodeList,
  action: fn(webdriver.WebDriver(remote_value.NodeRemoteValue)) -> webdriver.WebDriver(
    new_state,
  ),
) -> webdriver.WebDriver(new_state)

Perform an action on the defined list.

pub fn perform_on_table(
  locator: #(
    locator.Locator,
    locator.Locator,
    locator.Locator,
    Int,
  ),
  driver: webdriver.WebDriver(state),
  on_element: NodeTable,
  action: fn(webdriver.WebDriver(remote_value.NodeRemoteValue)) -> webdriver.WebDriver(
    new_state,
  ),
) -> webdriver.WebDriver(new_state)

Perform an action on the defined table.

Search Document