循环点击处理列表中所有页面
在编写冰狐自动化脚本过程中经常会遇到要按顺序点击列表中的所有项,依次处理。每点击一次就打开新页面,处理后返回,再继续点击下一个列表项,继续处理。。。
一、错误的处理方法
- 找到列表容器
- for循环,然后点击处理
function main() {
var ret = findView('id:container');
if (ret.length > 0) {
var container = ret.views[0];
for (var item of container) {
click(item);
// 点击后会弹出新界面,处理。。。
// 处理完成后返回列表界面
back();
}
}
}
二、正确的处理方法
由于ui是不断变化的,当我们点击列表弹出新界面后,以前的列表界面可能已经被操作系统回收,当我们处理新界面再返回到原来列表页面时,已经不是以前的列表页面了,而是全新的列表页面,此时之前的container(容器)已经被操作系统销毁。所以点击下一个列表时会失败。正确的处理方法是每次返回后都要重新搜索下container(容器),代码如下:
function main() {
var index = 0;
while(true) {
var ret = findView('id:container');
if (ret.length > 0) {
var container = ret.views[0];
if (index < container.length) {
var item = container[index];
click(item);
// 点击后会弹出新界面,处理。。。
// 处理完成后返回列表界面
back();
++index;
} else {
break;
}
} else {
break;
}
}
}