将应用设置为与UI自动器的默认按钮交互

问题描述 投票:1回答:1

我有一个测试用例,其中在应用中打开了“设置为默认值”提示。我想使用UI自动器进行测试,并且成功测试了这种情况,但并非100%可靠。不幸的是,有些设备的大写字母写有“设置为默认值”提示按钮,而有些则没有,因此我无法为此测试用例创建100%可靠的测试。我已经在下面编写了这段代码,但是当通过文本获取“设置为默认”按钮时,字母大小写不起作用,但是当我想与该按钮交互时,文本大小写很重要。在这种情况下,切换IF-ELSE情况不能解决问题。而且,以某种方式,当我想按这些对话框按钮id时,它们都不起作用(button1,button2 ..)。

            val roleManager = activity.applicationContext?.getSystemService("role") as RoleManager
            if (roleManager.isRoleAvailable(android.app.role.ASSISTANT)) {
                if (!roleManager.isRoleHeld(android.app.role.ASSISTANT)) {
                    val myApp = device.findObject(UiSelector().textMatches(InstrumentationRegistry.getInstrumentation().targetContext.getString(R.string.app_name)))
                    myApp.click()
                    sleepLong()
                    var setAsDefaultButton: UiObject? = null
                    if (device.findObject(UiSelector().text("Set as default")) != null) {
                        setAsDefaultButton = device.findObject(UiSelector().text("Set as default"))
                        setAsDefaultButton?.click()
                    } else if (device.findObject(UiSelector().text("SET AS DEFAULT")) != null) {
                        setAsDefaultButton = device.findObject(UiSelector().text("SET AS DEFAULT"))
                        setAsDefaultButton?.click()
                    } else {
                        clickDialogPositiveButton()
                    }
                }
            }
        }
android kotlin android-espresso android-uiautomator android-instrumentation
1个回答
0
投票

您可以使用Pattern对象而不是字符串。

您可以在代码中使用类似:

val pattern = Pattern.compile("Set as default", Pattern.CASE_INSENSITIVE)
if(device.findObject(UiSelector().text(pattern)) != null)) {

} else {

}
© www.soinside.com 2019 - 2024. All rights reserved.