android - 将应用程序设置为与 UI 自动程序的默认按钮交互

标签 android kotlin android-espresso android-uiautomator android-instrumentation

我有一个测试用例,其中在应用程序中打开了“设置为默认值”提示。我想用 UI automator 测试它,我成功地测试了那个案例,但不是 100% 可靠。不幸的是,有些设备有用大写字母写的“设置为默认值”提示按钮,而有些则没有,所以我无法为这个测试用例创建 100% 可靠的测试。我在下面编写了这段代码,但是当通过文本获取“设置为默认值”按钮时,字母大小写不起作用,但是当我想与该按钮交互时,文本大小写很重要。在这种情况下,切换 IF-ELSE 案例并不能解决问题。不知何故,当我想按下这些时,所有对话框按钮 ID 都不起作用(button1、button2..)。

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()
        }
    }
}

最佳答案

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

您可以在您的代码中使用:

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

关于android - 将应用程序设置为与 UI 自动程序的默认按钮交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61122851/

相关文章:

android - 如何在非 UserInterface 板上赋予动态 android.permission.WRITE_SETTINGS 权限

java - Android:如何获取已安装应用程序的列表并将它们显示给用户

java - Kotlin-创建指定长度的随机整数的ArrayList吗?

java - 意外覆盖 : The following declarations have the same JVM signature error on specific classes hierarchy

android - 使用 Android Espresso 框架模拟用户在系统 Activity 中的点击

android - Espresso 自定义 ViewMatcher 不匹配描述未出现在日志中

android - Assets 困惑

android - 如何使用 ObjectAnimator 基于拖动 Action 平滑地向上/向下设置 View 动画?

android - 协程 : Runblocking freeze Android UI

Android Studio 无法解析 Espresso 3.0.0