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