Skip to main content

UiSelector DSL

For Android screens, Kolibrium provides a type-safe DSL for building UIAutomator UiSelector expressions - no raw Java strings required. Use uiSelector { } with androidUIAutomator or androidUIAutomators.

val loginButton by androidUIAutomator(uiSelector { text("Login") })

val listItem by androidUIAutomator(uiSelector {
className("android.widget.TextView")
textContains("Product")
enabled()
})

Available matchers​

Text​

FunctionMatches when…
text(value)element text equals value exactly
textContains(value)element text contains value
textStartsWith(value)element text starts with value
textMatches(regex)element text matches regex pattern

Content description​

FunctionMatches when…
description(value)content description equals value exactly
descriptionContains(value)content description contains value
descriptionStartsWith(value)content description starts with value
descriptionMatches(regex)content description matches regex pattern

Identity & state​

FunctionMatches when…
className(value)element class name equals value
resourceId(value)element resource name equals value
clickable(value = true)element is (or isn't) clickable
enabled(value = true)element is (or isn't) enabled
focusable(value = true)element is (or isn't) focusable
scrollable(value = true)element is (or isn't) scrollable

Position​

FunctionMatches when…
index(index)element is at index among siblings
instance(n)element is the n-th match (zero-based)

Combining clauses​

All clauses in a single uiSelector { } block are chained as a single UiSelector expression:

val addToCart by androidUIAutomator(uiSelector {
className("android.widget.Button")
textContains("Add To Cart")
enabled()
instance(0)
})