android - Espresso doubleClick() 不适用于某些设备
问题描述
我正在使用 Espresso 编写 UI 测试。我需要在双击时测试流程,但在某些设备上没有这样做。
onView(withId(R.id.idOfView))
.check(matches(someAssertion()))
.perform(doubleClick())
但这会在我的Nexus 5 - API Level 23模拟器上执行单击(有时是两次单击)。有趣的解决方法
perform(click(), doubleClick())
有用。但我不确定我是否可以相信这一点。有什么我想念的吗?
解决方案
为了使两次单击被识别为双击,第二次单击的 DOWN 事件必须在[min, max]
第一次单击的 UP 事件的毫秒内发生。min
并且max
可能因不同的设备而异,但我看到的值是40 ms min 和 300 ms max。
A导致 a与 a 。doubleClick
ViewAction
GeneralClickAction
DOUBLE
Tapper
这DOUBLE
Tapper
将在执行第二次点击之前等待所需的最小延迟。
您的模拟器上可能发生的情况是,在您通过最大允许延迟之前,它的运行速度不够快,无法注入第二次点击事件。
当您这样做时,在和perform(click(), doubleClick())
之间可能没有任何额外的等待,因此和 的第一次单击可能最终被识别为在您的慢速模拟器上的双击。这并不能保证它可以在实际设备上运行,或者在运行速度更快的计算机上运行的模拟器上运行。click
doubleClick
click
doubleClick
推荐阅读
- javascript - 当您在组合框中选择项目代码时,如何在文本框中显示项目价格?
- javascript - 发送 OTP 后无法显示输入 - Ionic FirebaseX
- python - 从 opentopomap.org 下载 png 无法正确保存 png
- django - Django pre_save 或 post_svae 不会通过模型触发,但 post_delete 是
- c++ - getline() 不读取字符串
- java - Java Swing:输入错误时如何允许用户再次输入Jtextfield?
- python - 用c制作日历
- usb - ESP32 usb to STM32 USB cdc 模式 - USB to USB
- julia - 如何在 Julia 中找到包的路径?
- ssl - 通过 jmeter 中的 Pepperbox 采样器连接 kafka 服务器时出现异常