Я обнаружил странное поведение в отношении метода 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()
при желании)