有没有人尝试
Android UITesting框架UIAutomator?
当我使用类UiScrollabl“在可滚动对象中查找某些对象时,如果可滚动对象的长度太长(需要滑动两次以找到它),它就无法找到对象,如”开发人员选项“中的“设置”应用.
有没有人有同样的问题?
当我使用类UiScrollabl“在可滚动对象中查找某些对象时,如果可滚动对象的长度太长(需要滑动两次以找到它),它就无法找到对象,如”开发人员选项“中的“设置”应用.
有没有人有同样的问题?
解决方法@H_404_6@
我通过覆盖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()方法在第一次尝试时失败.天知道为什么.
上面简单地说如果它在第一个卷轴上失败,则继续进行.如果它无法在第二个滚动滚动,那么它确实会返回失败.
- 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()方法在第一次尝试时失败.天知道为什么.
上面简单地说如果它在第一个卷轴上失败,则继续进行.如果它无法在第二个滚动滚动,那么它确实会返回失败.