14

我正在尝试在 EditText 中键入一些文本:


    public void testSearch() {
          onView(withId(R.id.titleInput)).perform(typeText("Engineer"));
          onView(withId(R.id.titleInput)).check(matches(withText("Engineer")));
    }

我看到 EditText 正在获得焦点,但没有任何反应。没有输入文本。
我在手机和模拟器上试过这个 - 结果相同。

4

10 回答 10

17

看起来我想通了这个问题。它与硬件与软件键盘有关。

对于模拟器:

转到设置 -> 语言和输入 -> 将默认输入切换为示例软键盘。

对于手机:

从 Play 商店安装软件键盘并切换到它。似乎某些手机的本机键盘不起作用。

现在可以了。

于 2014-01-04T01:00:14.010 回答
15

使用 Espresso 2 时遇到了同样的问题。作为一种解决方法,我使用的是 replaceText 而不是 typeText。

public void testSearch() {
      onView(withId(R.id.titleInput)).perform(click(), replaceText("Engineer"));
      onView(withId(R.id.titleInput)).check(matches(withText("Engineer")));
}
于 2015-05-21T11:42:00.220 回答
14

如果 EditText 还没有焦点,则应先单击它。如果这解决了您的问题,那么就没有错误。

onView(withId(R.id.titleInput)).perform(click()).perform(typeText("Engineer"));
于 2013-12-14T00:52:48.707 回答
11

您可以通过在 EditText 上调用 setText 来绕过该问题。

   final EditText titleInput = (EditText) activity.findViewById(R.id.titleInput);
   getInstrumentation().runOnMainSync(new Runnable() {
        public void run() {
            titleInput.setText("Engineer");
        }
    });
于 2013-12-12T14:33:32.543 回答
5

同样的问题通过以下方式解决:

editText.perform(scrollTo(), click(), clearText(), typeText(myInput), closeSoftKeyboard())

有趣的是,我只有在我的机器努力工作时才会遇到问题。

于 2019-07-11T19:19:08.683 回答
3

您可以将它包含在这样的代码中,

onView(withId(R.id.titleInput))
     .perform(click(), replaceText("Engineer"), closeSoftKeyboard());
于 2016-09-14T10:02:47.523 回答
1

我通过设置layout_height="wrap_content"我想要的视图解决了这个问题click()。也许它可以帮助这里的人。

于 2018-05-15T23:41:41.690 回答
0

如果您使用 Genymotion,您可能需要在 Genymotion 配置中切换默认键盘(它是模拟器上的应用程序)。

  1. 转到应用程序 -> Genymotion 配置 -> 键盘 -> 虚拟键盘(在提示您重新启动时单击“是”)

注意:关闭模拟器后,这些更改不会持续存在。每次启动模拟器时都需要设置此项。

于 2014-05-07T22:34:28.317 回答
0

对我来说,我的测试方法用@UiThreadTest. 我删除了它,它解决了。

于 2019-08-21T18:31:29.167 回答
0

为我工作closeSoftKeyboard()后添加。typeText()

代码:

onView(withId(R.id.editTextUserInput))
            .perform(typeText(STRING_TO_BE_TYPED), closeSoftKeyboard());

这就是它在Android 文档中的记录方式。

于 2020-07-12T22:21:09.163 回答