我有EditText和按钮(在EditText下)的屏幕。要求是显示软键盘时必须在按钮下。是否可以编写Espresso单元测试(或者anoter测试)来检查?Android,Espresso。如何检查软键盘是否被查看?
0
A
回答
0
Android键盘是系统的一部分,而不是你的应用程序,所以意式咖啡在这里是不够的。
我在我的测试活动创造了以下布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.masta.testespressoapplication.MainActivity">
<EditText
android:id="@+id/edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="TEST" />
</RelativeLayout>
如果你想只用咖啡肮脏的解决办法是:
@Test
public void checkButtonVisibilty2() throws Exception {
onView(withId(R.id.edittext)).perform(click());
try {
onView(withId(R.id.button)).perform(click());
throw new RuntimeException("Button was there! Test failed!");
} catch (PerformException e) {
}
}
此测试将尝试点击该按钮,它会抛出一个PerformException异常,因为它实际上会点击Softkeyboard - 这是不允许的。 但我不会推荐这种方式,这是相当滥用espresso框架。
溶液中的好一点恕我直言,是采用了android用户界面的Automator:
@Test
public void checkButtonVisibilty() throws Exception {
onView(allOf(withId(R.id.edittext), isDisplayed())).perform(click());
UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
UiObject button = mDevice.findObject(new UiSelector().resourceId("com.example.masta.testespressoapplication:id/button"));
if (button.exists()) {
throw new RuntimeException("Button is visible! Test failed!");
}
}
本采用Android UI的Automator尝试获取按钮UI元素并检查它是否在当前屏幕中存在。 (更换包装,标识中的“RESOURCEID”与那些对你的情况下调用)
的Android UI的Automator u需要这个额外的gradle这个进口:
// Set this dependency to build and run UI Automator tests
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
androidTestCompile 'com.android.support:support-annotations:25.2.0'
一个总体思路:这种测试似乎非常容易出错,因为你没有真正的软键盘控制和它的外观,所以我会谨慎使用它。
相关问题
- 1. 检查软键盘是否关闭
- 2. 如何检查软键盘是否在设备上打开
- 3. Espresso软键盘类型
- 4. Android Espresso NoMatchingViewException检查
- 5. 查看Android键盘缓存
- 6. Android键盘Disturbs查看
- 7. Android - 如何检查textview当前是否显示键盘输入
- 8. 从推动查看软键盘
- 9. 检查软件键盘是否在Windows Phone 8中打开?
- 10. 检查div是否有键盘焦点
- 11. webservice如何检查用户是否被允许查看项目?
- 12. 我如何检查图像是否已被查看?
- 13. Objective C如何检查并查看对象是否被选中?
- 14. 如何检查键盘上是否释放了特定的键?
- 15. Android软键盘显示数字查看第一个
- 16. Symfony如何检查检查是否被检查没有形式
- 17. Android如何检查FrameLayout已经查看是否添加
- 18. 检查ALT键是否被按下
- 19. 检查某个键是否被按下?
- 20. xlib XNextEvent检查键是否被按下
- 21. 检查DELETE键是否被按下?
- 22. 检查键是否被按下硒
- 23. Android - 查看是否按Home键
- 24. 如何检测被查看的页面是否是子类别
- 25. 我该如何检查ipad键盘的隐藏按钮是否被按下?
- 26. onInputShowListener Android - 是否可以检测是否显示任何软键盘?
- 27. 如何在Android中点击EditText时查看自定义软键盘?
- 28. UITest。如何检查键盘是否存在?
- 29. JQuery - 如何检查输入是否来自键盘?
- 30. 如何检查是否使用本地/硬件键盘?
我的回答是否帮助您解决问题? – stamanuel
不是没有帮助。因为当按钮可见时你的测试通过。但我只需要在以下情况下测试合格:按钮可见并且按钮的底部边界位于软键盘上方。 – Alexei
好的,你的意思是测试通过,但键盘略微超过按钮?这是因为android espresso具有90%的可见性规则(=如果视图项目的90%可见,则测试通过)。你可以覆盖它,然后按钮必须具有100%的可视性 – stamanuel