Упростите способ вызова UiSelector с неопределенным количеством параметров - PullRequest
0 голосов
/ 21 апреля 2020

У UiSelector есть много методов для установки критериев поиска в соответствии с целью. Если у меня есть только resourceId и text в качестве параметров, тогда мне просто нужно 4 if-else.

Однако, если у меня есть больше параметров, таких как имя_класса , имя_пакета или textContains , тогда для обработки мне понадобится огромный размер if-else.

Есть ли простой способ вызова UiSelector с помощью неопределенное количество параметров?

val resourceId = bundle["resourceId"] as String?
val text = bundle["text"] as String?
val uiObject = getUiObject(resourceId, text)

private fun getUiObject(resourceId: String?, text: String?): UiObject? {
    return if (resourceId != null && text != null)
        uiDevice.findObject(UiSelector().resourceId(resourceId).text(text))
    else if (resourceId != null)
        uiDevice.findObject(UiSelector().resourceId(resourceId))
    else if (text != null)
        uiDevice.findObject(UiSelector().text(text))
    else
        null
}
...