Edu*_*ysh 11 android android-espresso
我正在尝试在EditText中键入一些文本:
public void testSearch() {
onView(withId(R.id.titleInput)).perform(typeText("Engineer"));
onView(withId(R.id.titleInput)).check(matches(withText("Engineer")));
}
我看到EditText正在获得焦点,但没有任何反应.没有输入文字.
我在手机和模拟器上试过这个 - 结果相同.
Edu*_*ysh 16
看起来我发现了这个问题.它与硬件和软件键盘有关.
对于模拟器:
转到设置 - >语言和输入 - >将默认输入切换到样本软键盘.
对于电话:
从Play商店安装软件键盘并切换到该键盘.看来某些手机的原生键盘不起作用.
它现在有效.
小智 11
您可以通过在EditText上调用setText来绕过此问题.
final EditText titleInput = (EditText) activity.findViewById(R.id.titleInput);
getInstrumentation().runOnMainSync(new Runnable() {
public void run() {
titleInput.setText("Engineer");
}
});
Run Code Online (Sandbox Code Playgroud)
小智 11
使用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")));
}
Run Code Online (Sandbox Code Playgroud)
小智 10
如果EditText还没有焦点,你应该先点击它.如果这可以解决您的问题,那么就没有错误.
onView(withId(R.id.titleInput)).perform(click()).perform(typeText("Engineer"));
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以将其包含在这样的代码中,
onView(withId(R.id.titleInput))
.perform(click(), replaceText("Engineer"), closeSoftKeyboard());
Run Code Online (Sandbox Code Playgroud)
同样的问题通过以下方法解决:
editText.perform(scrollTo(), click(), clearText(), typeText(myInput), closeSoftKeyboard())
Run Code Online (Sandbox Code Playgroud)
有趣的是,只有当我的机器努力工作时,我才会遇到问题。
| 归档时间: |
|
| 查看次数: |
15579 次 |
| 最近记录: |