UISelector.text()在操作系统版本之间的不同行为

时间:2019-05-15 18:48:07

标签: android kotlin uiautomator android-uiautomator

我发现有关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()

0 个答案:

没有答案