UiScrollable在Android uiautomator中不起作用

前端之家收集整理的这篇文章主要介绍了UiScrollable在Android uiautomator中不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有人尝试 Android UITesting框架UIAutomator?
当我使用类UiScrollabl“在可滚动对象中查找某些对象时,如果可滚动对象的长度太长(需要滑动两次以找到它),它就无法找到对象,如”开发人员选项“中的“设置”应用.
有没有人有同样的问题?

解决方法@H_404_6@
我通过覆盖UiScrollable类来修复它.
  1. public class UiScrollable extends com.android.uiautomator.core.UiScrollable {
  2.  
  3. public UiScrollable(UiSelector container) {
  4. super(container);
  5. }
  6.  
  7. @Override
  8. public boolean scrollIntoView(UiSelector selector) throws UiObjectNotFoundException {
  9. if (exists(getSelector().childSelector(selector))) {
  10. return (true);
  11. } else {
  12. System.out.println("It doesn't exist on this page");
  13. // we will need to reset the search from the beginning to start search
  14. scrollToBeginning(getMaxSearchSwipes());
  15. if (exists(getSelector().childSelector(selector))) {
  16. return (true);
  17. }
  18. for (int x = 0; x < getMaxSearchSwipes(); x++) {
  19. System.out.println("I'm going forward a page: " + x);
  20. if(!scrollForward() && x!=0) { // x!=0 is the hack
  21. return false;
  22. }
  23.  
  24. if(exists(getSelector().childSelector(selector))) {
  25. return true;
  26. }
  27. }
  28. }
  29. return false;
  30. }
  31.  
  32. }

我已经复制了源代码UiScrollable.java(可能在某些时候过时,要小心),只需更改if(!scrollForward()&& x!= 0)行.

根据我的观察,如果Google的ui测试页面上的示例代码滚动设置应用程序的应用程序屏幕,则scrollForwards()方法在第一次尝试时失败.天知道为什么.

上面简单地说如果它在第一个卷轴上失败,则继续进行.如果它无法在第二个滚动滚动,那么它确实会返回失败.

猜你在找的Android相关文章