浓缩咖啡执行点击

Posted

技术标签:

【中文标题】浓缩咖啡执行点击【英文标题】:Espresso perform click 【发布时间】:2015-10-03 04:26:21 【问题描述】:

我尝试使用“espresso”编写简单的测试

@RunWith(androidJUnit4.class)
@LargeTest
public class EspressoTest 
    @Rule
    public ActivityRule<IntroActivity> mActivityRule = new ActivityRule(IntroActivity.class);

    public EspressoTest() 
        IdlingPolicies.setMasterPolicyTimeout(1000, TimeUnit.SECONDS);
    

    @Test
    public void testShouldClickEmailButton() 
            onView(withText(R.string.in_email)).perform(click());
    



但我得到了一个错误:

PerformException: Error performing 'single click' on view 'with string from resource id: <2131099761>[in.email] value: Login With Email'.

我正在尝试不同的测试框架,robotium 对我来说是最好的,但如果有人可以帮助解决这个错误,我将非常感激

UPD更详细的日志

原因:java.lang.RuntimeException: Action will not be executed 因为目标视图与以下一项或多项不匹配 约束:至少 90% 的视图区域显示到 用户。目标视图:“DSeparatedButtonid=2131427459, res-name=button_login,可见性=VISIBLE,宽度=622,高度=120, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=333.0, text=使用电子邮件登录, input-type=0, ime-target=false, has-links=false"

我还有一点飞溅动画

【问题讨论】:

Action will not be performed because the target view does not match one or more of the following constraints 你读过这个吗? @JaredBurrows 是的,我看到了,我有一个上滑按钮动画,但我怎么能等 1 秒呢?我试过 Thread.sleep(1000);等等,但它没有帮助 啊,感谢您更新您的帖子。我认为您使用 Espresso 是对的。看看这个:***.com/questions/21417954/espresso-thread-sleep. thx,我现在要尝试一下,它真的很奇怪,因为我在机器人中没有遇到这个问题,但是我在模拟器中遇到了像 OOM 这样的片状测试和错误(不是真正的设备),所以我决定迁移到另一个 啊这是不同作者的两个不同框架。这很好,所以当下一个人遇到这个问题时,我们可以搜索这个问题:) 【参考方案1】:

onView 方法仅用于在屏幕上 100% 可见的视图,因此 Espresso 可以正确测试它们。 我的建议是使用 onData 方法来测试视图。 这应该有效:

    onData(withText(R.string.in_email)).perform(click());

如果这不是您要寻找的答案,我可以为您提供更多帮助。如果这不起作用,请告诉我。 祝你好运!

【讨论】:

试过但没有用,当我在 firebase 内的物理三星 s7 设备上运行它时它失败了,如果我看到结果视频,屏幕的一部分是黑色的,看起来它被调整了大小视频。【参考方案2】:
@RunWith(AndroidJUnit4.class)
@LargeTest
public class EspressoTest 
    @Rule
    public ActivityTestRule<IntroActivity> mActivityRule = new ActivityTestRule(IntroActivity.class);



    @Test
    public void testShouldClickEmailButton() 
            mActivityRule.launch(new Intent());
            onView(withText(R.string.in_email)).perform(click());
    



【讨论】:

代码解释总是很受欢迎的。

以上是关于浓缩咖啡执行点击的主要内容,如果未能解决你的问题,请参考以下文章

带有 AsyncTask 的浓缩咖啡

手机睡着的浓缩咖啡测试

未解决的浓缩咖啡方法

浓缩咖啡 - withEffectiveVisibility vs isDisplayed

带有“hasBackground”的浓缩咖啡测试

勺子和浓缩咖啡测试