当前位置: 首页 > 知识库问答 >
问题:

Espresso:如果视图存在,则返回布尔值

经清野
2023-03-14
if (!Espresso.onView(withId(R.id.someID)).check(doesNotExist()){
   // then do something
 } else {
   // do nothing, or what have you
 }
 if (UiAutomator.getbyId(SomeId).exists()){
      .....
   }

共有1个答案

江高飞
2023-03-14

测试中的条件逻辑是不可取的。考虑到这一点,Espresso的API被设计成引导测试作者远离它(通过显式地使用测试动作和断言)。

尽管如此,您仍然可以通过实现自己的ViewAction并将isDisplayed检查(在perform方法中)捕获到AtomicBoolean来实现上述功能。

另一个不太优雅的选项--捕获由失败检查引发的异常:

    try {
        onView(withText("my button")).check(matches(isDisplayed()));
        //view is displayed logic
    } catch (NoMatchingViewException e) {
        //view not displayed logic
    }
    fun ViewInteraction.isDisplayed(): Boolean {
        try {
            check(matches(ViewMatchers.isDisplayed()))
            return true
        } catch (e: NoMatchingViewException) {
            return false
        }
    }

    if(onView(withText("my button")).isDisplayed()) {
        //view is displayed logic
    } else {
        //view not displayed logic
    }
 类似资料:
  • 问题内容: 我正在尝试查看Espresso是否显示了视图。这是一些伪代码来显示我在尝试什么: 但是我的问题是不返回布尔值。这只是一个断言。使用UiAutomator,我可以执行以下操作: 问题答案: 测试中的条件逻辑是不可取的。考虑到这一点,Espresso的API旨在引导测试作者远离它(通过明确显示测试动作和断言)。 话虽如此,您仍然可以通过实现自己的ViewAction并将isDisplaye

  • 问题内容: 我在node.js中编写一个函数来查询PostgreSQL表。 如果该行存在,我想从该行返回id列。 如果不存在,我想将其插入并返回ID()。 我一直在尝试和语句的变体,但似乎无法使其正常工作。 问题答案: 我建议在数据库端进行检查,然后将ID返回给nodejs。 例子: 而不是在Node.js端(在此示例中,我使用的是node-postgres):

  • 这是一个布尔方法,是我作业的一小部分。我想根据输入和记录之间是否匹配来返回true或false。我想我遇到了语法问题。 这是该方法的代码,但始终有红线指示我应该在代码中添加return,否则将该方法更改为void。但我已经在if语句中添加了return true。

  • 问题内容: 在一个SQL语句中,我尝试插入一行,如果由于约束而失败,则返回现有行。 我有: 该列具有唯一约束。我尝试在末尾追加,但这仍然不返回现有行。 为什么是这样?我以为我的最后一条语句将被执行并返回。有任何想法吗? 注意:由于某些复杂的竞争条件,我无法使用Postgres函数或多个SQL语句。 问题答案: WITH d(t, e) AS ( VALUES (‘abcdefg’, ‘2014-0

  • 问题内容: 我有一些EditText,用户可以输入ftp地址,用户名,密码,端口和testConnection按钮。如果成功建立连接,它将返回布尔值true。 我正在重新编写代码以使用AsyncTasks执行各种ftp操作,但是,如果连接成功,如何传递布尔值? 还有我的AsyncTask 问题答案: 如果myMethod从onPostExecute内部代码调用,它将在UI线程上运行。否则,你需要通

  • 问题内容: 关于以下原因为何的任何想法。 当我将request_url粘贴到浏览器中时,我会获取json数据,但是如果我在php中尝试,则var_dump就是bool(false); 有任何想法吗?? 更新并修复 OK伙计们,感谢您的所有帮助。是的,我帮助我追踪了这一情况。事实证明,php.ini配置为禁止打开url,因此file_get_contents无法正常工作。我在各个站点上发现了以下方便