浓咖啡点击文字的特定单词

时间:2017-02-22 11:58:28

标签: java android-espresso ui-testing

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

当我使用onView(withId(R.id.switchTextView)).perform(click());测试通过但是因为在我想要点击的文本之前有初始文本它不会改变视图。我怎样才能指向并点击“使用电子邮件登录”文字?

2 个答案:

答案 0 :(得分:2)

你可以这样做

onView(withId(R.id.switchTextView(matches(withText(containsString("Login with email"))));

答案 1 :(得分:0)

我发现的唯一方法是找到要按下的位置,并告诉Espresso在此处按下。看起来确实很难,但实际上我一开始尝试了3次正确的位置。比听起来容易得多。

我就是这样:

onView(withId(R.id.switchTextView)).perform(clickPercent(0.4F, 0.4F))

原因是因为我的文字稍微位于视图的左上方。在这种情况下,我会建议使用0.5F,0.8F之类的值,因为我认为这是需要单击的标签的正确部分。

为此,我使用了clickPercent。方法copyed by this 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)
}