automated-tests - 如何使用espresso从textview中获取文本

标签 automated-tests android-testing android-espresso

我想在 LinearLayout 的 TextView 中显示文本字符串。浓缩咖啡可以吗?如果没有,有没有其他方法可以做到这一点,或者我可以在 espresso 测试用例中使用 android api 吗?我正在使用 API 17 18 或更新版本的 espresso 1.1(应该是最新的。)。我对此一无所知。谢谢。

最佳答案

基本思想是使用带有内部 ViewAction 的方法。在它的 perform 方法中检索文本。匿名类只能访问 final 字段,所以我们不能让它设置一个局部变量 getText() ,而是使用 String 数组从 ViewAction 中取出字符串。 .

    String getText(final Matcher<View> matcher) {
        final String[] stringHolder = { null };
        onView(matcher).perform(new ViewAction() {
            @Override
            public Matcher<View> getConstraints() {
                return isAssignableFrom(TextView.class);
            }
    
            @Override
            public String getDescription() {
                return "getting text from a TextView";
            }
    
            @Override
            public void perform(UiController uiController, View view) {
                TextView tv = (TextView)view; //Save, because of check in getConstraints()
                stringHolder[0] = tv.getText().toString();
            }
        });
        return stringHolder[0];
    }
注:应谨慎使用此类 View 数据检索器。如果您经常发现自己在编写这种方法,那么您很有可能从一开始就做错了。也永远不要访问 ViewAssertion 之外的 View 或 ViewAction ,因为只有在那里才能确保交互是安全的,因为它是从 UI 线程运行的,并且在执行之前经过检查,没有其他交互干预。

关于automated-tests - 如何使用espresso从textview中获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23381459/

相关文章:

android - 如何使用条件导航将 androidTest 添加到 fragment ?

android - Espresso 检查 View 要么 doesNotExist 要么 not isDisplayed

selenium - 使用 Phantomjs/Selenium(来自 R)进行网页抓取,设置元素值

android-fragments - 当我尝试从 Android 测试中的 fragmentManager 获取片段时,为什么会出现 NullPointerException?

android-espresso - Android studio - androidTest 文件夹丢失

android - Roboguice 辅助标注

Android Studio 内存使用 Ubuntu 16

selenium - Ionic/Cordova/Hybrid App 的自动化测试工具/框架

testing - AEM Workflows 的自动化测试

testing - 在 TestCafe 中测试期间在浏览器控制台中运行命令