在自动化脚本中如何正确循环点击并处理列表中所有页面?

test
Jan 5, 2025, 9:31:55 AM

我们在编写冰狐自动化脚本过程中经常会遇到要按顺序点击列表中的所有项,依次处理。每点击一次就打开新页面,处理后返回,再继续点击下一个列表项,然后继续处理。这个看似简单的任务,要想正确实现并不简单,下面就以冰狐智能辅助的自动化脚本为例子分别给出不正确和正确的实现方法,供大家参考。

一、错误的处理方法

  1. 找到列表容器
  2. for循环,然后点击处理
  3. 返回容器列表
  4. 继续点击下一个

具体冰狐js代码如下:

function main() {
    var ret = findView('id:container');
    if (ret.length > 0) {
        var container = ret.views[0];
        for (var item of container) {
            click(item);
            // 点击后会弹出新界面,处理。。。

            // 处理完成后返回列表界面
            back2Page('txt:列表');
        }
    }
}

如果按上面的代码处理的话,有可能会失败(也有可能会成功),因为当我们点击跳转到其他页面后,如果当前手机内存比较紧张,系统有可能会杀掉container所在的页面,当我们返回后,以前的获取到的container已经无效了(已经被系统杀掉回收了)。

二、正确的处理方法

由于ui是不断变化的,当我们点击列表弹出新界面后,以前的列表界面可能已经被操作系统回收,当我们处理新界面再返回到原来列表页面时,已经不是以前的列表页面了,而是全新的列表页面,此时之前的container(容器)已经被操作系统销毁。所以点击下一个列表时会失败。正确的处理方法是每次返回后都要重新搜索下container(容器),冰狐js代码如下:

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);
                // 点击后会弹出新界面,处理。。。

                // 处理完成后返回列表界面
                back2Page('txt:列表');
                ++index;
            } else {
                break;
            }
        } else {
            break;
        }
    }
}

三、总结

本文分析了循环点击并处理列表的场景,给出了错误的处理方法,并分析了原因,最后给出了正确的解决方案和相关源码。

发表评论
最新评论
商务合作QQ:3765323427
Copyright © 2021-2025 冰狐智能辅助. All rights reserved. 浙ICP备15043866号 《冰狐智能辅助服务协议》