我发现有关UiAutomator的UISelector.text()
方法的一些怪异行为。
让我们看下面的示例代码:
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
属性的文本。
有人想出这个吗?您如何编写可在每个Android版本(假设minSDKVersion = 19
)上运行的UITest?
(我知道我可以使用UISelector.description()
和UISelector.resourceId()
,但希望在需要时可以使用UISelector.text()
)