我之前从未使用过浓缩咖啡。现在我想在editText字段片段中自动键入一些文本。我只知道如何使用Activity。
@LargeTest
public class EspressoTest {
@Rule
public ActivityTestRule<CheckInActivity> mActivityRule =
new ActivityTestRule<>(CheckInActivity.class);
@Test
public void testActivityShouldHaveText() throws InterruptedException {
onView(withId(R.id.editText)).perform(clearText(), typeText("KI"));
}
}
我有MainActivity托管的MainFragment,editText放在MainFragment布局中。
也有一种方法在浓缩咖啡中点击一些文字,所以它可以通过文字找到视图吗?
答案 0 :(得分:2)
也有一种方法在浓缩咖啡中点击一些文字,所以它可以通过文字找到视图吗?
要按照文本捕获视图,您可以执行此示例:
onView(withString(R.string.editText)).check(matches(isDisplayed()));
要捕捉一个文本或只是它的一部分,你可以使用(我认为它也可能在Robotium中)Hamcrest匹配器。在这里你可以找到所有匹配器:Hamcrest 1.3 Quick Reference
为了更清楚,我会给你一些例子:
onView(withId(R.id.textView)).check(matches(withText(startsWith("Hello"))));
onView(withId(R.id.action_bar_main)).check(matches(withText(String.valueOf(contains("Hello")))));
onView(withId(R.id.textView)).check(matches(withText(endsWith("Hello"))));
我认为这也很有用:
How do I detect a view that I have created programmatically in espresso
答案 1 :(得分:1)
现在我决定使用机器人,因为我还不知道如何使用浓缩咖啡来实现它 Robotium有waitForFragment和waitForActivity等方法
答案 2 :(得分:1)
如果您想按文字查找视图,可以使用onView(withText())
。
但是,您可能需要链接几个匹配器才能找到您想要的内容。 allOf()
让你做到这一点。您可能还需要先点击文本字段才能输入。
onView(allOf(
withId(R.id.editText),
withText(R.string.edit_text)
)).perform(click(),
clearText(),
typeText("KI")
);
我更喜欢在大多数测试中使用replaceText()
来节省时间。