UiScrollable在Android uiautomator中不起作用

前端之家收集整理的这篇文章主要介绍了UiScrollable在Android uiautomator中不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有人尝试 Android UITesting框架UIAutomator?
当我使用类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()方法在第一次尝试时失败.天知道为什么.

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

原文链接:https://www.f2er.com/android/313643.html

猜你在找的Android相关文章