uiform

class appian_locust.uiform.ClientMode(value)

Bases: enum.Enum

An enumeration.

DESIGN = 'DESIGN'
TEMPO = 'TEMPO'
class appian_locust.uiform.SailUiForm(interactor: appian_locust._interactor._Interactor, state: Dict[str, Any], url: str, breadcrumb: str = 'SailUi')

Bases: object

_check_checkbox_by_attribute(attribute: str, value_for_attribute: str, indices: List[int], locust_request_label: str = '')appian_locust.uiform.SailUiForm

Function that checks checkboxes. It finds checkboxes by the attribute and its value provided.

Parameters
  • attribute (str) – attribute to use to find the checkbox

  • value_for_attribute (str) – Value of the attribute used to find the checkbox

  • indices (str) – Indices of the checkbox to check. Pass None or empty to uncheck all

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

_click(label: str, is_test_label: bool = False, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Internal function wrapped by various click methods

This internal function is called by both click_start_process_link() and click_card_layout_by_index(). It takes parameters needed for making a start process lnik call to the server and calls the interactor to do that.

_dispatch_click(component: Dict[str, Any], locust_label: str) → Dict[str, Any]

Dispatches the appropriate link interaction based on the link type if appropriate

Parameters
  • link_component (Dict[str, Any]) – Link component to interact with

  • locust_label (str) – Label used to identify the request for locust statistics

Returns

State returned by the interaction

Return type

Dict[str, Any]

_get_update_url_for_reeval(state: Dict[str, Any]) → str

This function looks at the links object in a SAIL response and finds the URL for “rel”=”update”, which is then used to do other interactions on the form.

_reconcile_state(new_state: dict, form_url: str = '')appian_locust.uiform.SailUiForm
_validate_component_found(component: Optional[Dict[str, Any]], label: str, type: Optional[str] = None) → None
_validate_component_found_by_attribute(component: Dict[str, Any], attribute: str, value_for_attribute: str) → None
assert_no_validations_present()appian_locust.uiform.SailUiForm

Raises an exception if there are validations present on the form, otherwise, returns the form as is

Returns (SailUiForm): Form as it was when validations were asserted

check_checkbox_by_label(label: str, indices: List[int], locust_request_label: str = '')appian_locust.uiform.SailUiForm

Checks a checkbox by its label Indices are positions to be checked

Parameters
  • label (str) – Value for label of the checkbox

  • indices (str) – Indices of the checkbox to check. Pass None or empty to uncheck all

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.check_checkbox_by_label('myLabel', [1])  # checks the first item
>>> form.check_checkbox_by_label('myLabel', None) # unchecks
check_checkbox_by_test_label(test_label: str, indices: List[int], locust_request_label: str = '')appian_locust.uiform.SailUiForm

Checks a checkbox by its testLabel attribute Indices are positions to be checked

Parameters
  • test_label (str) – Value for the testLabel attribute of the checkbox

  • indices (str) – Indices of the checkbox to check. Pass None or empty to uncheck all

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.check_checkbox_by_test_label('myTestLabel', [1])  # checks the first item
>>> form.check_checkbox_by_test_label('myTestLabel', None) # unchecks
click(label: str, is_test_label: bool = False, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Clicks on a component on the form, if there is one present with the following label (case sensitive) Otherwise throws a NotFoundException

Can also be called as ‘click_link’ or ‘click_button’ to convey intent

This can also click StartProcessLinks or ProcessTaskLinks

Parameters
  • label (str) – Label of the component to click

  • is_test_label (bool) – If you are clicking a button or link via a test label instead of a label, set this boolean to true

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.click('Submit')
>>> form.click('SampleTestLabel', is_test_label = True)
click_button(label: str, is_test_label: bool = False, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Clicks on a component on the form, if there is one present with the following label (case sensitive) Otherwise throws a NotFoundException

This can also click StartProcessLinks or ProcessTaskLinks

Parameters
  • label (str) – Label of the component to click

  • is_test_label (bool) – If you are clicking a button via a test label instead of a label, set this boolean to true

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.click_button('Save')
>>> form.click_link('Update')
click_card_layout_by_index(index: int, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Clicks a card layout link by index. This method will find the CardLayout component on the UI by index and then perform the click behavior on its Link component.

Parameters

index (int) – Index of the card layout on which to click. (first found card layout , or second etc.) (Indices start from 1)

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

This finds link field on the 2nd card layout on the page and clicks it. It handles StartProcessLink as well, so no need to call click_start_process_link() when it is on a CardLayout.

>>> form.click_card_layout_by_index(2)

Clicks on a component on the form, if there is one present with the following label (case sensitive) Otherwise throws a NotFoundException

This can also click StartProcessLinks or ProcessTaskLinks

Parameters
  • label (str) – Label of the component to click

  • is_test_label (bool) – If you are clicking a link via a test label instead of a label, set this boolean to true

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.click_link('Update')

Click a record link on the form if there is one present with the following label (case sensitive) Otherwise throws a ComponentNotFoundException

Parameters
  • label (str) – Label of the record link to click

  • is_test_label (bool) – If you are clicking a record link via a test label instead of a label, set this boolean to true

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The record form (feed) for the linked record.

click_record_search_button_by_index(index: int = 1, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Clicks the Search button of a record grid.

Parameters

index (int) – Index of the record search button on the form

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.click_record_search_button_by_index(1)

Clicks a related action (either a related action button or link) on the form by label If no link is found, throws a ComponentNotFoundException

Parameters

label (str) – Label of the related action

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

How to use click_related_action(): Use records function - visit_record_instance_and_get_feed_form() to get Record Instance SailUiForm, then get the header response and finally click on the related action by label.

>>> feed_form = records.visit_record_instance_and_get_feed_form()
>>> header_form = feed_form.get_record_header_form()
>>> header_form.click_related_action('Request upgrade')

Clicks a start process link on the form by label If no link is found, throws a ComponentNotFoundException

Parameters
  • label (str) – Label of the link

  • site_name (str) – Name of the site (i.e. the Sites feature)

  • page_name (str) – Name of the page within the site

Keyword Arguments
  • is_mobile (bool) – Boolean to use the mobile form of the request

  • locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.click_start_process_link('Request upgrade')

Clicks a start process link on the form by label (for Mobile) If no link is found, throws a ComponentNotFoundException

Parameters
  • label (str) – Label of the link

  • site_name (str) – Name of the site (i.e. the Sites feature)

  • page_name (str) – Name of the page within the site

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.click_start_process_link_on_mobile('Open Issue')
click_tab_by_label(tab_label: str, tab_group_test_label: str, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Selects a Tab by its label and its tab group’s testLabel

Parameters
  • tab_label (str) – Label of the tab to select

  • tab_group_test_label (str) – Test Label of the tab group (tab is part of a tab group)

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples:

fill_date_field(label: str, date_input: datetime.date, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Fills a date field with the specified date

Parameters
  • label (str) – Label of the date field

  • date_input (date) – Date used to fill the field

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.fill_date_field('Today', datetime.date.today())
>>> form.fill_date_field('Date of Birth', datetime.date(1992, 12, 30))
fill_datetime_field(label: str, datetime_input: datetime.datetime, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Fills a datetime field with the specified datetime

NOTE: this does one api call for both the date and time, whereas filling the elements on screen requires two separate evaluations, one to fill the date field and one to fill the time field. This is the way the request would look if one of the fields were already filled.

Parameters
  • label (str) – Label of the datetime field

  • datetime_input (date) – Date time used to fill the field

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.fill_datetime_field('Now', datetime.datetime.now())
>>> form.fill_datetime_field('Date and Time of Birth', datetime.datetime(1992, 12, 30, 12, 30, 5))
fill_field_by_any_attribute(attribute: str, value_for_attribute: str, text_to_fill: str, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Selects a Field by “attribute” and its value provided “value_for_attribute” and fills it with text “text_to_fill”

Parameters
  • attribute (str) – Name of the componen to fill

  • value_for_attribute (int) – Value for the attribute passed in to this function

  • text_to_fill (int) – Value to fill in the field of type ‘type_of_component’

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.fill_field_by_any_attribute("placeholder", "Write a comment", "Hello, Testing")
# selects the Component with the "placeholder" attribute having "Write a comment" value
# and fills it with "Hello, Testing"
fill_field_by_index(type_of_component: str, index: int, text_to_fill: str, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Selects a Field by its index and fills it with a text value

Parameters
  • type_of_component (str) – Name of the componen to fill

  • index (int) – Index of the field on the page (is it the first one found, or second etc.)

  • value (int) – Value to fill in the field of type ‘type_of_component’

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.fill_field_by_index("ParagraphField", 1, "Hello, Testing")
# selects the first ParagraphField with the value "Hello, Testing"
fill_paragraph_field(label: str, value: str, is_test_label: bool = False, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Fills a field on the form, if there is one present with the following label (case sensitive) Otherwise throws a NotFoundException

Parameters
  • label (str) – Label of the field to fill out

  • value (str) – Value to update the label to

  • is_test_label (bool) – If you are filling a text field via a test label instead of a label, set this boolean to true

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.fill_text_field('Title','My New Novel')
fill_picker_field(label: str, value: str, identifier: str = 'id', fill_request_label: str = '', pick_request_label: str = '')appian_locust.uiform.SailUiForm

Enters the value in the picker widget and selects one of the suggested items if the widget is present with the following label (case sensitive)

If there is more than one suggestion, this method will select a random one out of the list

Otherwise this throws a NotFoundException

The mechanism it uses to find a pickerWidget is prefixing the picker field label with test- and looking for a testLabel

Parameters
  • label (str) – Label of the field to fill out

  • value (str) – Value to update the label to

Keyword Arguments
  • identifier (str) – Key to select the field to filter on, defaults to ‘id’

  • fill_request_label (str) – Label to associate in locust statistics with filling the picker field

  • pick_request_label (str) – Label to associate in locust statistics with selecting the picker suggestion

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.fill_picker_field('Title','My New Novel')
>>> form.fill_picker_field('People','Jeff George')
>>> form.fill_picker_field('Customer', 'GAC Guyana', identifier='code')
fill_text_field(label: str, value: str, is_test_label: bool = False, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Fills a field on the form, if there is one present with the following label (case sensitive) Otherwise throws a NotFoundException

Parameters
  • label (str) – Label of the field to fill out

  • value (str) – Value to update the label to

  • is_test_label (bool) – If you are filling a text field via a test label instead of a label, set this boolean to true

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.fill_text_field('Title','My New Novel')

This method allows you to Filter the Record Type List (displaying record instance for a specific record type) which makes the same request when typing something in the search box and reloading the page. More interactions (with the filtered list) can be performed on the returned SailUiForm Object.

Note: This is different from how an end user interacts with the SearchBox. In that case you would type something in the box and when you would unfocus from the box a reevaluation happens and then you click the ‘Search’ button which returns the filtered results.

Examples

>>> form.filter_records_using_searchbox('Donuts')

Returns (SailUiForm): The record type list UiForm with the filtered results.

get_latest_form()appian_locust.uiform.SailUiForm

Latest ui form

Returns (dict): The ui form with its current ui

get_record_header_form()appian_locust.uiform.SailUiForm

Extracts the embedded record header form from a record “feed” form to enable interaction with components in the record header.

Returns (SailUiForm): The record header UiForm embedded within a record “feed” form.

Examples

>>> form.get_record_header_form()
get_record_view_form()appian_locust.uiform.SailUiForm

Extracts the embedded record view form from a record “feed” form to enable interaction with components in the record view.

Returns (SailUiForm): The record view UiForm embedded within a record “feed” form.

Examples

>>> form.get_record_view_form()
get_response() → Optional[Dict[str, Any]]

Latest state response

Returns (dict): The last recorded response

go_to_next_record_grid_page(locust_request_label: str = '')appian_locust.uiform.SailUiForm
property latest_state

Latest state response

Returns (dict): The last recorded response

move_to_beginning_of_paging_grid(label: str = None, index: int = None, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Moves to the beginning of a paging grid, if possible Either a label or an index is required, indices are useful if there is no title for the grid

Parameters
  • label (str) – Label of the grid

  • index (str) – Index of the grid

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.move_to_beginning_of_paging_grid(label='my nice grid')
move_to_end_of_paging_grid(label: str = None, index: int = None, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Moves to the end of a paging grid, if possible Either a label or an index is required, indices are useful if there is no title for the grid

Parameters
  • label (str) – Label of the grid

  • index (str) – Index of the grid

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.move_to_end_of_paging_grid(label='my nice grid')
move_to_left_in_paging_grid(label: str = None, index: int = None, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Moves to the left in a paging grid, if possible It might require getting the state of the grid if you’ve moved to the end/ previous part of the grid Either a label or an index is required, indices are useful if there is no title for the grid

Parameters
  • label (str) – Label of the grid

  • index (str) – Index of the grid

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.move_to_left_in_paging_grid(label='my nice grid')
move_to_right_in_paging_grid(label: str = None, index: int = None, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Moves to the right in a paging grid, if possible It might require getting the state of the grid if you’ve moved within the grid Either a label or an index is required, indices are useful if there is no title for the grid

Parameters
  • label (str) – Label of the grid

  • index (str) – Index of the grid

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.move_to_right_in_paging_grid(index=0) # move to right in first grid on the page
refresh_after_record_action(label: str, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Refreshes a form after the completion of a record action.

Parameters

label (str) – Label of the record action that has just been completed

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> initial_form = copy(form)
>>> form.click('Request upgrade')
>>> ...
>>> form.click('Submit')
>>> initial_form.refresh_after_record_action('Request upgrade')
select_dropdown_item(label: str, choice_label: str, locust_request_label: str = '', is_test_label: bool = False)appian_locust.uiform.SailUiForm

Selects a dropdown item on the form If no dropdown found, throws a NotFoundException If no element found, throws a ChoiceNotFoundException

Parameters
  • label (str) – Label of the dropdown

  • choice_label (str) – Label of the dropdown item to select

  • is_test_label (bool) – If you are interacting with a dropdown via a test label instead of a label, set this boolean to true. User filters on a record instance list use test labels.

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.select_dropdown_item('MyDropdown', 'My First Choice')
select_multi_dropdown_item(label: str, choice_label: List[str], locust_request_label: str = '', is_test_label: bool = False)appian_locust.uiform.SailUiForm

Selects a multiple dropdown item on the form If no multiple dropdown found, throws a NotFoundException If no element found, throws a ChoiceNotFoundException

Parameters
  • label (str) – Label of the dropdown

  • choice_label ([str]) – Label(s) of the multiple dropdown item to select

  • is_test_label (bool) – If you are interacting with a multiple dropdown via a test label instead of a label, set this boolean to true. User filters on a record instance list use test labels.

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.select_multi_dropdown_item('MyMultiDropdown', ['My First Choice','My Second Choice'])
select_radio_button_by_index(field_index: int, index: int, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Selects a radio button by its field index Index is position to be selected

Parameters
  • field_index (int) – Index of the radio button field on the page

  • index (int) – Index of the radio button to select

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.select_radio_button_by_index(1, 1)  # selects the first item in the first radio button field
select_radio_button_by_label(label: str, index: int, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Selects a radio button by its label Index is position to be selected

Parameters
  • label (str) – Label of the radio button field

  • index (int) – Index of the radio button to select

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.select_radio_button_by_label('myLabel', 1)  # selects the first item
select_radio_button_by_test_label(test_label: str, index: int, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Selects a radio button by its test label Index is position to be selected

Parameters
  • test_label (str) – Label of the radio button field

  • index (int) – Index of the radio button to select

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.select_radio_button_by_test_label('myTestLabel', 1)  # selects the first item
sort_paging_grid(label: str = None, index: int = None, field_name: str = '', ascending: bool = False, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Sorts a paging grid by the field name, which is not necessarily the same as the label of the column And might require inspecting the JSON to determine what the sort field is

Sorts by ascending = False by default, override to set it to True

Either a label or an index is required, indices are useful if there is no title for the grid

Parameters
  • label (str) – Label of the grid

  • index (str) – Index of the grid

  • field_name (str) – Field to sort on (not necessarily the same as the displayed one)

  • ascending (bool) – Whether to sort ascending, default is false

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.sort_paging_grid(index=0,field_name='Total',ascending=True)
upload_document_to_upload_field(label: str, file_path: str, locust_request_label: str = '')appian_locust.uiform.SailUiForm

Uploads a document to a named upload field There are two steps to this which can fail, one is the document upload, the other is finding the component and applying the update.

Parameters
  • label (str) – Label of the upload field

  • file_path (str) – File path to the document

Keyword Arguments

locust_request_label (str) – Label used to identify the request for locust statistics

Returns (SailUiForm): The latest state of the UiForm

Examples

>>> form.upload_document_to_upload_field('Upload File', "/usr/local/appian/File.zip")
>>> form.upload_document_to_upload_field('Upload Properties', "/usr/local/appian/File.properties")