Appian Grid
Use page.grid(...) to work with rows and cells in an Appian grid. The factory
waits for the matching grid before returning it, so callers can use it directly.
A grid can be identified by label, header, row_name, or column_name. Additional identifiers can narrow the match.
label matches only the grid's own accessible name. header matches
either a region's accessible name or header text, without requiring a heading
role. Header text can appear in a heading, nested span, paragraph, strong text,
or table caption. Text outside the grid resolves through its nearest
table-containing ancestor; a caption resolves to its own table. Ordinary cell
text is not treated as a header. A grid matched by both region and text paths
is returned only once:
Count the displayed rows
row_count() returns the number of data rows currently displayed. It does not count the header and does not return the total number of records across other pages.
Work with a row
Rows can be identified by visible text or by a one-based row number:
Work with a cell
A cell can be found directly from the grid:
Names and one-based numbers can be mixed:
items.cell(row_name="Item 1001", column_number=3)
items.cell(row_number=1, column_name="Status")
items.cell(row_number=1, column_number=3)
You can also start from a row or column:
items.row(name="Item 1001").cell(column_name="Owner")
items.column(name="Status").cell(row_name="Item 1001")
Use components inside a cell
Cells expose the same Appian component style used elsewhere:
items.cell(
row_name="Item 1001",
column_name="Action",
).buttons[0].click()
items.cell(
row_name="Item 1001",
column_name="Status",
).dropdowns[0].select(value="Active")
Matching options
exact=True and visible=True are the defaults. Use exact=False for an intentional partial match and visible=None when visibility should not filter the result.
Check whether a matching grid is visible now:
is_visible() itself returns immediately. Use wait=False on the factory to
probe an optional grid without waiting. By default page.grid() already waits.
The default visible=True waits for a visible table. visible=False waits for
an attached hidden table, and visible=None waits for an attached table with
either visibility. A missing table never counts as a ready hidden grid.
Timeout values are in seconds. The grid uses the supplied timeout, or the
configured browser/context timeout when omitted (90 seconds in CORE). This
waits for the grid, not for a particular row to be added.
You can explicitly wait on a previously obtained component after a UI transition:
items = page.grid(label="Items", wait=False)
items.wait_until_ready()
items.wait_until_visible(timeout=8)
API
AppianGrid
Reusable operations for Appian grids and editable grids.
AppianGrid provides semantic table/grid operations and can
be instantiated through AppianPage.grid(...) as a semantic
Appian grid component. At least one of label, header,
row_name, or column_name is required for the component form.
visible is tri-state: True selects visible tables, False
selects hidden tables, and None applies no visibility filter so the
live locator can contain both visible and hidden matches.
is_visible
Return whether the first matching grid is currently visible.
This is an immediate check; it does not wait for a grid to appear.
wait_until_visible
Wait for the first matching grid to become visible and return it.
The optional timeout overrides this grid's configured timeout in seconds.
wait_until_ready
Wait for a matching grid using its configured visibility constraint.
Visible grids must be visible. Hidden and unfiltered grids must be attached; the live locator retains the requested visibility filter.
cell
cell(
*,
row_name: str | None = None,
row_number: int | None = None,
column_name: str | None = None,
column_number: int | None = None,
visible: bool | str | None = True,
exact: bool = True
)
Return a cell directly from this table.
The explicit row/column arguments take precedence. When omitted,
row_name and column_name supplied when this AppianGrid was
created are reused. Row and column numbers are one-based.
appian_column
appian_column(
*,
name: str | None = None,
column_number: int | None = None,
visible: bool | str | None = True,
exact: bool = True
)
Return a semantic column scoped to this Appian grid.
row
row(
*,
name: str | None = None,
row_number: int | None = None,
visible: bool | str | None = True,
exact: bool = True
)
Return a semantic row scoped to this Appian grid.
column
column(
*,
name: str | None = None,
column_number: int | None = None,
visible: bool | str | None = True,
exact: bool = True
)
Return a semantic column scoped to this table.
row_count
Return the number of currently rendered data rows.
Header rows, empty-state placeholders, and Appian paging totals are not
counted. timeout waits only for the table to exist; it does not wait
for an empty table to gain rows.