UISelector.text () различное поведение между версиями ОС - PullRequest
1 голос
/ 15 мая 2019

Я обнаружил странное поведение в отношении метода UISelector.text() в UiAutomator.

Давайте возьмем этот пример кода:

val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
device.wait(Until.hasObject(By.pkg(resolveInfo.activityInfo.packageName).depth(0)), 1000)

device.findObject(UiSelector().text("Some text"))

И предположим, у меня есть Button в моей первой деятельности, которая выглядит следующим образом:

<Button
        android:id="@+id/my_button"
        android:layout_width="match_parent"
        android:layout_height="@dimen/my_button_height"
        android:text="Some text"
        android:textAllCaps
        />

При попытке нацелить кнопки со свойствами, такими как textAllCaps, поведение этого метода меняется в зависимости от версии устройства на Android.

Для версий Android Nougat (API-уровень 24) или выше, этот метод ожидает, что строка, передаваемая в качестве параметра, будет в заглавных буквах, как она отображается (например, "SOME TEXT"), в то время как для более низких версий она ожидает, что строка быть текстом, присвоенным атрибуту android:text этой кнопки.

Кто-нибудь придумал это? Как вы пишете UITests, которые работают для каждой версии Android (скажем, minSDKVersion = 19)?

(я знаю, что могу использовать UISelector.description() и UISelector.resourceId(), но я хотел бы иметь возможность использовать UISelector.text() при желании)

...