确定按钮是否不能使用Espresso进行点击

时间:2016-04-10 22:57:04

标签: android android-espresso

否则

onView(withId(R.id.login_button)).check(matches(isClickable()));

用于验证按钮是否可点击。如何验证按钮是否可点击?

编辑:就像我说的,它只告诉我它是否isClickable。我正在寻找一种方法来验证它可点击。

1 个答案:

答案 0 :(得分:3)

  

编辑 - 解决方案!

     

解决方法是使用not()函数返回一个匹配器,该匹配器具有与传递给它的匹配器相反的逻辑。

这很简单:not( isClickable() )

onView(withId(R.id.login_button)).check(matches( not(isClickable()) ));

说明 -

我试图使用匹配或检查函数来测试它们通过的匹配器的虚假性,这是不可能的。但是,可以使用 not()函数创建一个与另一个匹配器具有相反逻辑的匹配器。

阅读documentation on ViewAssertions(如匹配)后,您会发现大多数ViewAssertions都不接受参数(并且没有接受我们在这种情况下关心的参数),并且必须{{ 1}}。这意味着我们无法改变ViewAssertion的工作方式,我们必须找到另一种方式。

  

分解代码 -

"Throw junit.framework.AssertionError when the view assertion does not hold."函数返回我们想要使用的UI对象(id为onView的按钮),我们在该视图对象上调用login_button来应用断言,或 检查 某些断言是真的。

check函数返回我们通过传入matches构建的断言。 Matcher函数向我们返回一个Matcher,我们可以用它来回馈isClickable()

matches()是一个Matcher,它接受另一个Matcher,并返回一个Matcher,它具有相反的Matcher传递给它的逻辑/返回值。 (那是满口的!)

这归结为说我们对not()应用断言。我们申请的断言是login_button

当ViewAssertion(matches( not( isClickable() ) ))被应用(matches(not(isClickable())))到视图对象(onView(...).check(...))时,操作将被记录到logcat,如果断言被评估为false,那么<{1}}也将被抛出。