Espresso 测试框架 – 查看操作

Espresso 测试框架 – 查看操作


如前所述,视图操作会自动执行用户在 Android 应用程序中可执行的所有可能操作。Espresso onView和“onData”提供了perform方法,该方法接受视图操作并在测试环境中调用/自动化相应的用户操作。例如,“click()”是一个视图动作,当传递给 onView( R.id.myButton ) .perform(click())方法时,将触发按钮的点击事件(id:“myButton” ) 在测试环境中。

在本章中,让我们了解 espresso 测试框架提供的视图操作。

类型文本()

typeText()接受一个字符串类型的参数(文本)并返回一个视图操作。返回的视图操作将提供的文本输入到视图中。在放置文本之前,它会点击视图一次。如果内容已经包含文本,则可以将其放置在任意位置。

onView(withId(R.id.text_view)).perform(typeText("Hello World!"))

typeTextIntoFocusedView()

typeTextIntoFocusedView()是类似的TypeText()不同之处在于它的地方旁边在视图中的光标位置的文本。

onView(withId(R.id.text_view)).perform(typeTextIntoFocusedView("Hello World!"))

替换文本()

replaceText()是类似于的TypeText()不同之处在于它替换的视图的内容。

onView(withId(R.id.text_view)).perform(typeTextIntoFocusedView("Hello World!"))

明文()

clearText()没有参数并返回一个视图操作,它将清除视图中的文本。

onView(withId(R.id.text_view)).perform(clearText())

按键()

pressKey()接受键码(例如 KeyEvent.KEYCODE_ENTER)并返回一个视图动作,它将按下与键码对应的键。

onView(withId(R.id.text_view)).perform(typeText(
   "Hello World!", pressKey(KeyEvent.KEYCODE_ENTER))

按菜单键()

pressMenuKey()没有参数并返回一个视图操作,它将按下硬件菜单键。

onView(withId(R.id.text_view)).perform(typeText(
   "Hello World!", pressKey(KeyEvent.KEYCODE_ENTER), pressMenuKey())

关闭软键盘()

closeSoftKeyboard()没有参数并返回一个视图操作,如果打开键盘,它将关闭键盘。

onView(withId(R.id.text_view)).perform(typeText(
   "Hello World!", closeSoftKeyboard())

点击()

click()没有参数并返回一个视图操作,它将调用视图的单击操作。

onView(withId(R.id.button)).perform(click())

双击()

doubleClick()没有参数并返回一个视图操作,它将调用视图的双击操作。

onView(withId(R.id.button)).perform(doubleClick())

长点击()

longClick()没有参数并返回一个视图动作,它将调用视图的长按动作。

onView(withId(R.id.button)).perform(longClick())

按返回()

pressBack() 没有参数并返回一个视图操作,该操作将单击后退按钮。

onView(withId(R.id.button)).perform(pressBack())

pressBackUnconditionally()

pressBackUnconditionally()没有参数并返回一个视图动作,如果后退按钮动作退出应用程序本身,它将单击后退按钮并且不会抛出异常。

onView(withId(R.id.button)).perform(pressBack())

打开链接()

openLink()有两个参数。第一个参数(链接文本)是Matcher类型,指的是 HTML 锚标签的文本。第二个参数 (url) 是Matcher类型,指的是 HTML 锚标记的 url。它仅适用于TextView它返回一个视图动作,它收集文本视图内容中所有可用的 HTML 锚标签,找到匹配第一个参数(链接文本)和第二个参数(url)的锚标签,最后打开相应的 url。让我们考虑一个文本视图,其内容为 –

<a href="http://www.google.com/">copyright</a>

然后,可以使用以下测试用例打开并测试链接,

onView(withId(R.id.text_view)).perform(openLink(is("copyright"),
   is(Uri.parse("http://www.google.com/"))))

在这里,openLink 将获取文本视图的内容,找到具有版权的链接为文本,www.google.com为 url,并在浏览器中打开该 url。

openLinkWithText()

openLinkWithText()有一个参数,它可以是 **String* 类型或 Matcher 类型。它只是openLink *方法捷径

onView(withId(R.id.text_view)).perform(openLinkWithText("copyright"))

openLinkWithUri()

openLinkWithUri()有一个参数,它可以是String或 Matcher类型只是一个切到OpenLink的*方法。

onView(withId(R.id.text_view)).perform(openLinkWithUri("http://www.google.com/"))

pressImeActionButton()

pressImeActionButton()没有参数并返回一个视图动作,它将执行在android:imeOptions配置中设置的动作例如,如果android:imeOptions等于 actionNext,这会将光标移动到屏幕中下一个可能的EditText视图。

onView(withId(R.id.text_view)).perform(pressImeActionButton())

滚动到()

scrollTo()没有参数并返回一个视图操作,它将在屏幕上滚动匹配的 scrollView。

onView(withId(R.id.scrollView)).perform(scrollTo())

刷下()

swipeDown()没有参数并返回一个视图动作,它将在屏幕上触发向下滑动动作。

onView(withId(R.id.root)).perform(swipeDown())

向上滑动()

swipeUp()没有参数并返回一个视图动作,它将在屏幕上触发向上滑动动作。

onView(withId(R.id.root)).perform(swipeUp())

向右滑动()

swipeRight()没有参数并返回一个视图动作,它将在屏幕上触发向右滑动动作。

onView(withId(R.id.root)).perform(swipeRight())

向左滑动()

swipeLeft()没有参数并返回一个视图动作,它将在屏幕上触发向左滑动动作。

onView(withId(R.id.root)).perform(swipeLeft())

觉得文章有用?

点个广告表达一下你的爱意吧 !😁