Android UIAutomator: как дождаться выполнения любого из нескольких условий?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android UIAutomator: как дождаться выполнения любого из нескольких условий?

Сообщение Anonymous »

На этапе создания базовых профилей для моего приложения мне нужно подождать, пока мой канал отобразится. Проблема в том, что я не знаю, какой именно тег следует ожидать, поскольку канал является динамическим и тег может вообще не отображаться.
Поэтому в основном я хочу дождаться любого из возможных теги, которые должны быть там. Как только появится первый из них, код должен вернуть true. Я не знаю, как это сделать. Вот чем я сейчас занимаюсь:

Код: Выделить всё

fun MacrobenchmarkScope.waitForDashboardContent() {
device.wait(Until.hasObject(By.res("dashboard_feed")), 10_000)
val lazyColumn = device.findObject(By.res("dashboard_feed"))
lazyColumn.wait(Until.hasObject(By.res("dashboard_section_title")), 2_000)
}
ChatGPT предложил нечто замечательное, но такого метода не существует:

Код: Выделить всё

lazyColumn.wait(Until.hasObject(By.any(By.res("dashboard_section_title"),By.res("another_section_title"))),2_000)
Когда я столкнулся с тем, что By.any не существует, он дал мне следующее предложение:

Код: Выделить всё

val lazyColumn = device.findObject(By.res("dashboard_feed"))
val startTime = System.currentTimeMillis()
val timeout = 2000

while (System.currentTimeMillis() - startTime < timeout) {
if (lazyColumn.hasObject(By.res("dashboard_section_title")) ||
lazyColumn.hasObject(By.res("another_section_title"))) {
// One of the elements was found within the timeout
break
}
// Small delay to prevent tight looping
Thread.sleep(100)
}
Есть ли лучшее решение?

Подробнее здесь: https://stackoverflow.com/questions/791 ... conditions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»