有没有人尝试
Android UITesting框架UIAutomator?
当我使用类UiScrollabl“在可滚动对象中查找某些对象时,如果可滚动对象的长度太长(需要滑动两次以找到它),它就无法找到对象,如”开发人员选项“中的“设置”应用.
有没有人有同样的问题?
当我使用类UiScrollabl“在可滚动对象中查找某些对象时,如果可滚动对象的长度太长(需要滑动两次以找到它),它就无法找到对象,如”开发人员选项“中的“设置”应用.
有没有人有同样的问题?
解决方法
我通过覆盖UiScrollable类来修复它.
public class UiScrollable extends com.android.uiautomator.core.UiScrollable { public UiScrollable(UiSelector container) { super(container); } @Override public boolean scrollIntoView(UiSelector selector) throws UiObjectNotFoundException { if (exists(getSelector().childSelector(selector))) { return (true); } else { System.out.println("It doesn't exist on this page"); // we will need to reset the search from the beginning to start search scrollToBeginning(getMaxSearchSwipes()); if (exists(getSelector().childSelector(selector))) { return (true); } for (int x = 0; x < getMaxSearchSwipes(); x++) { System.out.println("I'm going forward a page: " + x); if(!scrollForward() && x!=0) { // x!=0 is the hack return false; } if(exists(getSelector().childSelector(selector))) { return true; } } } return false; } }
我已经复制了源代码:UiScrollable.java(可能在某些时候过时,要小心),只需更改if(!scrollForward()&& x!= 0)行.
根据我的观察,如果Google的ui测试页面上的示例代码滚动设置应用程序的应用程序屏幕,则scrollForwards()方法在第一次尝试时失败.天知道为什么.
上面简单地说如果它在第一个卷轴上失败,则继续进行.如果它无法在第二个滚动滚动,那么它确实会返回失败.