浓缩咖啡点击文本的特定词

Bil*_*oyo 5 java ui-testing android-espresso

在我的 espresso 测试中,我想点击带有 id 的文本元素的某个部分SwitchTextView。全文为“您是会员吗?使用电子邮件登录” 当您单击使用电子邮件登录时,它会切换页面视图。

当我使用onView(withId(R.id.switchTextView)).perform(click());测试通过但因为在我想要点击的文本之前有初始文本不会改变视图。如何确定并仅触摸“使用电子邮件登录”文本?

Fil*_*nik 5

我发现的唯一方法是找到按下的点并告诉 Espresso 按下那里。看起来真的很难,但实际上我第一次尝试了 3 次就选对了位置。这比听起来更容易。

我只是这样做的:

onView(withId(R.id.switchTextView)).perform(clickPercent(0.4F, 0.4F))
Run Code Online (Sandbox Code Playgroud)

原因是因为我的文本稍微位于视图的左上角。在这种情况下,我会建议类似 0.5F、0.8F 的值,因为我认为这是需要单击的标签的右侧部分。

为此,我使用了clickPercent. 此 anwser 复制的方法。

我复制了我的 Kotlin 版本,以防有人发现它有用。

fun clickPercent(pctX: Float, pctY: Float): ViewAction {
    return GeneralClickAction(
            Tap.SINGLE,
            CoordinatesProvider { view ->
                val screenPos = IntArray(2)
                view.getLocationOnScreen(screenPos)
                val w = view.width
                val h = view.height

                val x = w * pctX
                val y = h * pctY

                val screenX = screenPos[0] + x
                val screenY = screenPos[1] + y

                floatArrayOf(screenX, screenY)
            },
            Press.FINGER,
            InputDevice.SOURCE_MOUSE,
            MotionEvent.BUTTON_PRIMARY)
}
Run Code Online (Sandbox Code Playgroud)


小智 3

你可以这样做

onView(withId(R.id.switchTextView(matches(withText(containsString("Login with email"))));
Run Code Online (Sandbox Code Playgroud)