代码之家  ›  专栏  ›  技术社区  ›  Emil S.

Espresso测试无法在某些设备上单击DialogButton

  •  0
  • Emil S.  · 技术社区  · 5 年前

    我有一个浓缩咖啡测试来验证正在显示的对话框。它按下一个按钮来打开对话框,并应通过单击对话框的正按钮来关闭它。该对话框可以正常打开,但在两个Samsung设备(Samsung S6 Edge和Samsung S7)上单击对话框的正按钮失败,但在所有其他设备上都可以工作。我尝试了以下解决方案:

    按按钮上的文本匹配按钮 onView(withText(R.string.changelog_ok_button)).perform(click())

    onView(withId(android.R.id.button1)).perform(click())

    这两种解决方案都适用于大多数设备,但三星拒绝执行点击操作,导致以下错误:

    android.support.test.espresso.PerformException: Error performing 'single click' on view 'with string from resource id: <2131755113>[changelog_ok_button] value: OK'.
    [...]
    Caused by: java.lang.RuntimeException: Action will not be performed because the target view does not match one or more of the following constraints:
    at least 90 percent of the view's area is displayed to the user.
    Target view: "AppCompatButton{id=16908313, res-name=button1, visibility=VISIBLE, width=192, height=144, 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, layout-params=android.widget.LinearLayout$LayoutParams@ab3a33, tag=null, root-is-layout-requested=false, has-input-connection=false, x=666.0, y=12.0, text=OK, input-type=0, ime-target=false, has-links=false}"
    

    最令人困惑的是,当我使用布局检查器时,按钮的ID是 R.id.button1 它的文本也与 R.string.changelog_ok_button

    三星对对话框有什么不同的处理方法会导致这种情况吗?有没有人有同样的问题,并找到了解决办法,或有一些想法,我可以让这个工作?

    0 回复  |  直到 5 年前
        1
  •  0
  •   denys    5 年前

    从错误描述可以看出:

    Caused by: java.lang.RuntimeException: Action will not be performed because the target view does not match one or more of the following constraints: at least 90 percent of the view's area is displayed to the user.