[手机按键备忘]常见的脚本结构思路的补充(强化了错误代码的处理部分个人向)

思路代码(还是以前的旧代码 并且只是思路代码 无法直接使用)

//例子:遍历读取账号文件内容 并且具备记忆功能 自动从上次的位置开始 不是粗暴的执行一个删除一个账号的处理 而是把记忆写到脚本配置里面
//1.读取账号文件内容
//2.对账号文件做基础的判断和处理 文件是否存在 内容是否对 是否去掉了可能的Bom头和乱码 去掉空行等等 这里粗略的写一写
//3.获取账号文件内容转化为数组
账号文件内容数组 = file.ReadLines(账号文件路径)
//4.读取脚本本身的配置 看看是否记录了上次的行数和对应的行内容 判断里面的内容是否正常 不正常就从第一行开始 正常就按照脚本配置的内容进行
起始行数=0
脚本记录的行数 = ReadConfig("脚本记录的行数")
脚本记录的行内容 = ReadConfig("脚本记录的行内容")
If Trim(脚本记录的行数) = "" or Trim(脚本记录的行内容) = "" Then
    //如果脚本记录的上次的行数和行内容为空 那么这个记录就不合法 就从第一行开始了
    起始行数 = 0
    showmessage "起始记录是第["&cstr(起始行数+1)&"]条"
    Delay 500
ElseIf not IsNumeric(Trim(脚本记录的行数)) or CInt(Trim(脚本记录的行数)) < 0 Then
    //脚本记录de阿上次的行数是不是数值 不是则不合法
    起始行数 = 0
    showmessage "起始记录是第["&cstr(起始行数+1)&"]条"
    Delay 500
ElseIf InStr(1, Trim(账号文件内容数组(CInt(脚本记录的行数))), 脚本记录的行内容) < 1 Then
    //脚本记录的行数和行内容 在现在读取的账号文件的对应行上的内容 是否和脚本记录的行内容一致 不一致证明这个账号文件有变动 就从第一行开始
    起始行数 = 0
    showmessage "文件内容变动 起始记录是第{"&(起始行数+1)&"}条 "
    Delay 500
Else
    起始行数 = CInt(Trim(脚本记录的行数))
    showmessage "起始记录是第["& cstr(脚本记录的行数+1)  &"]条"
    Delay 1000
End If
Delay 1000
//5.开始读取账号 读取前 把当前行数和行内容写入到脚本配置做记录
For i = 起始行数 To UBOUND(账号文件内容数组) //注意i不是从0开始的 就是说不一定是从第一行开始的
    Rem 主循环开头
    错误代码=0 //当执行一个新的账号流程 先默认是没任何报错的状态

    ////把当前行数和行内容写入到脚本配置里面 作为记录
    当前行数 = i
    本行内容 = trim(账号文件内容数组(i))
    WriteConfig "脚本记录的行数", CStr(当前行数), true
    WriteConfig "脚本记录的行内容", 本行内容, true //第三个参数必须为true
    ////分析出账号和密码 准备给脚本操作提供准备
    arr = Split(本行内容, "----")
    当前账号 = Trim(arr(0))
    当前密码 = Trim(arr(1))
    If 当前账号 = "" or 当前密码 = "" Then //简单判断下账号密码合法性 不合法就直接跳到下个账号进行操作
        goto 主循环结尾
    End If
    ////一些必要的脚本操作
    Call 登录()
    Call 签到()
    Call 日常()
    Call 退出()

    ////当前账号的运行结果和对应的处理方式 这里把错误代码更加细化 分为了几个大的范围 每个范围对应的各类错误
    If 错误代码 = 0 Then
        //运行正常没有发生任何意外
    ElseIf 错误代码 > 0 and 错误代码 <= 100 Then
        ////普通错误[不需要重开app或者停止脚本 可以执行当前登录操作]
        If 错误代码 = 1 Then
            //随便举个例子 账号密码格式不对 请检查
        ElseIf 错误代码 = 2 Then
            //随便举个例子 账号密码登录提示密码错误 请检查
        ElseIf 错误代码 = 3 Then
            //随便举个例子 账号密码登录提示封号 请检查
        End If

    ElseIf 错误代码 > 100 and 错误代码 <= 200 Then
        ////流程错误 [不需要重开app或者停止脚本 不执行当前和后续模块操作]            

    ElseIf 错误代码 > 200 and 错误代码 <= 300 Then
        //重开后下个账号错误[需要重开app 不执行当前模块操作 但是不是再这里重开app的]
        KillApp 当前包名
        Delay 2000
        RunApp 当前包名
        //然后正常执行到了主循环开头的标识那边 当前账号流程又从头开始了 当然 也可以更进一步
        //设置一个当前账号重复执行次数 判断当前账号重复次数到达多少次了依然无法完成就让他重开执行下一个账号的操作 避免无限卡一个账号无法继续执行的情况
        Goto 主循环结尾
    ElseIf 错误代码 > 300 and 错误代码 <= 400 Then
        //重开后重复当前账号错误[需要重开app 不执行当前模块操作 但是不是再这里重开app的]
        KillApp 当前包名
        Delay 2000
        RunApp 当前包名
        Goto 主循环开头
    ElseIf 错误代码 > 400 and 错误代码 <= 500 Then
        //遇到的是致命错误 脚本需要立刻停下 然后通知
        KillApp 当前包名
        //回到桌面
        For 2
            KeyPress "home"
            Delay 1000
        Next
        //通知告诉脚本即将停止 或者播放音乐 或者屏幕中间进入倒计时 或者出现弹窗警告 或者其他等等方法

        //然后停止脚本
        EndScript

    End If

    Rem 主循环结尾
    Delay 10
Next
//6 整个读取账号循环完毕不要忘记重置下脚本配置让脚本下次从第一行开始
ShowMessage "账号到底 重置记忆"
WriteConfig "脚本记录的行数", "", true
WriteConfig "脚本记录的行内容", "", true //第三个参数必须为true
Delay 2000
Function 登录()
    Dim t,tt,ttt,是否完成操作
    //判断之前的错误代码的值 来决定是否要执行当前模块操作
    If 错误代码 = 0 Then
    ElseIf 错误代码 > 0 and 错误代码 <= 100 Then
        //普通错误[不需要重开app或者停止脚本 可以执行当前登录操作]
    ElseIf 错误代码 > 100 and 错误代码 <= 200 Then
        //流程错误 [不需要重开app或者停止脚本 不执行当前和后续模块操作]
        Goto 登录结尾//直接跳转到模块末尾 不执行本模块的操作代码
    ElseIf 错误代码 > 200 and 错误代码 <= 300 Then
        //重开后下个账号错误[需要重开app 不执行当前模块操作 但是不是再这里重开app的]
    ElseIf 错误代码 > 300 and 错误代码 <= 400 Then
        //重开后重复当前账号错误[需要重开app 不执行当前模块操作 但是不是再这里重开app的]
    ElseIf 错误代码 > 400 and 错误代码 <= 500 Then
        //致命错误 [停止脚本 不执行当前模块操作 但是停止不是在这停止]
        Goto 登录结尾
    Else 

    End If

    Rem 登录开头
    是否完成操作 = -1

    //登录主代码
    t = TickCount()
    Do
        If TickCount() - t > 5 * 60 * 1000 Then //设定一个操作时间上限 超出该时间还没完成操作 判定操作超时
            错误代码=201//登录超时登录失败 自然无法执行后续 重开app然后下一个账号操作
            Goto 登录结尾
        End If

        If 遇到某个封号界面判定封号 then
            错误代码=202 //账号被封 无法执行后续 重开app然后下一个账号操作
            Goto 登录结尾
        End If
        If 出现密码错误提示 Then
            错误代码=203 //账号密码错误 无法执行后续 重开app然后下一个账号操作
            Goto 登录结尾
        End If
        If 出现账号会员即将到期的界面 Then
            错误代码=1 //只是个提示而已 并不会影响什么 可以正常执行后续流程
            Tap 100,200//点掉该界面即可 不需要跳出登录模块操作
        End If

        //这里是正常的登录界面的应对 不细说了
        If 登录界面 Then
            //输入当前z账号 当前密码操作
            //点击登录按钮 等待几秒
            //判断登录结果
        End If
        If 登录成功界面 Then
            错误代码 = 0
            Exit Do //正常出口
        End If
        If 登录失败界面 Then
            错误代码=204 //登录失败错误 无法执行后续 重开app然后下一个账号操作
            Goto 登录结尾
        End If

        Delay 500
    Loop

    Rem 登录结尾
End Function
Function 签到()
    Dim t,tt,ttt,是否完成操作
    //判断之前的错误代码的值 来决定是否要执行当前模块操作
    If 错误代码 = 0 Then
    ElseIf 错误代码 > 0 and 错误代码 <= 100 Then
        //普通错误[不需要重开app或者停止脚本 可以执行当前登录操作]
    ElseIf 错误代码 > 100 and 错误代码 <= 200 Then
        //流程错误 [不需要重开app或者停止脚本 不执行当前和后续模块操作]
        Goto 签到结尾//直接跳转到模块末尾 不执行本模块的操作代码
    ElseIf 错误代码 > 200 and 错误代码 <= 300 Then
        //重开后下个账号错误[需要重开app 不执行当前模块操作 但是不是再这里重开app的]
    ElseIf 错误代码 > 300 and 错误代码 <= 400 Then
        //重开后重复当前账号错误[需要重开app 不执行当前模块操作 但是不是再这里重开app的]
    ElseIf 错误代码 > 400 and 错误代码 <= 500 Then
        //致命错误 [停止脚本 不执行当前模块操作 但是停止不是在这停止]
        Goto 签到结尾
    Else 

    End If

    Rem 签到开头
    是否完成操作 = -1

    //登录主代码
    t = TickCount()
    Do
        If TickCount() - t > 5 * 60 * 1000 Then //设定一个操作时间上限 超出该时间还没完成操作 判定操作超时
            错误代码=201//登录超时登录失败 自然无法执行后续 重开app然后下一个账号操作
            Goto 签到结尾
        End If

        If 遇到已签到界面 Then
            Tap 100,200//点掉该界面即可 不需要跳出模块操作
        End If

        //这里是正常的登录界面的应对 不细说了
        If 签到界面 Then
            //执行签到操作 点击签到按钮
            //判断签到结果
        End If
        If 签到成功界面 Then
            错误代码 = 0
            Exit Do //正常出口
        End If
        If 签到失败界面 Then
            错误代码=205 //签到失败错误 无法执行后续 重开app然后下一个账号操作
            Goto 签到结尾
        End If
        //其他签到界面应对不说了
        Delay 500
    Loop

    Rem 签到结尾

End Function

Function 日常()

    Dim t,tt,ttt,是否完成操作
    //判断之前的错误代码的值 来决定是否要执行当前模块操作
    If 错误代码 = 0 Then
    ElseIf 错误代码 > 0 and 错误代码 <= 100 Then
        //普通错误[不需要重开app或者停止脚本 可以执行当前登录操作]
    ElseIf 错误代码 > 100 and 错误代码 <= 200 Then
        //流程错误 [不需要重开app或者停止脚本 不执行当前和后续模块操作]
        Goto 日常结尾//直接跳转到模块末尾 不执行本模块的操作代码
    ElseIf 错误代码 > 200 and 错误代码 <= 300 Then
        //重开后下个账号错误[需要重开app 不执行当前模块操作 但是不是再这里重开app的]
        Goto 日常结尾
    ElseIf 错误代码 > 300 and 错误代码 <= 400 Then
        //重开后重复当前账号错误[需要重开app 不执行当前模块操作 但是不是再这里重开app的]
        Goto 日常结尾
    ElseIf 错误代码 > 400 and 错误代码 <= 500 Then
        //致命错误 [停止脚本 不执行当前模块操作 但是停止不是在这停止]
        Goto 日常结尾
    Else 

    End If

    Rem 日常开头
    是否完成操作 = -1

    //登录主代码
    t = TickCount()
    Do
        If TickCount() - t > 5 * 60 * 1000 Then //设定一个操作时间上限 超出该时间还没完成操作 判定操作超时
            错误代码=202//日常超时日常失败 自然无法执行后续 重开app然后下一个账号操作
            Goto 日常结尾
        End If

        If 遇到已日常界面 Then
            Tap 100,200//点掉该界面即可 不需要跳出模块操作
        End If

        //这里是正常的登录界面的应对 不细说了
        If 日常界面 Then
            //执行日常操作 点击签到按钮
            //判断日常结果
        End If
        If 日常成功界面 Then
            错误代码 = 0
            Exit Do //正常出口
        End If
        If 日常失败界面 Then
            错误代码=206 //日常失败错误 无法执行后续 重开app然后下一个账号操作
            Goto 日常结尾
        End If
        //其他日常界面应对不说了
        Delay 500
    Loop

    Rem 日常结尾

End Function

Function 退出()
    Dim t,tt,ttt,是否完成操作
    //判断之前的错误代码的值 来决定是否要执行当前模块操作
    If 错误代码 = 0 Then
    ElseIf 错误代码 > 0 and 错误代码 <= 100 Then
        //普通错误[不需要重开app或者停止脚本 可以执行当前登录操作]
    ElseIf 错误代码 > 100 and 错误代码 <= 200 Then
        //流程错误 [不需要重开app或者停止脚本 不执行当前和后续模块操作]
        Goto 退出结尾//直接跳转到模块末尾 不执行本模块的操作代码
    ElseIf 错误代码 > 200 and 错误代码 <= 300 Then
        //重开后下个账号错误[需要重开app 不执行当前模块操作 但是不是再这里重开app的]
        Goto 退出结尾
    ElseIf 错误代码 > 300 and 错误代码 <= 400 Then
        //重开后重复当前账号错误[需要重开app 不执行当前模块操作 但是不是再这里重开app的]
        Goto 退出结尾
    ElseIf 错误代码 > 400 and 错误代码 <= 500 Then
        //致命错误 [停止脚本 不执行当前模块操作 但是停止不是在这停止]
        Goto 退出结尾
    Else 

    End If

    Rem 日常开头
    是否完成操作 = -1

    //登录主代码
    t = TickCount()
    Do
        If TickCount() - t > 5 * 60 * 1000 Then //设定一个操作时间上限 超出该时间还没完成操作 判定操作超时
            错误代码=203//退出超时退出失败 自然无法执行后续 重开app然后下一个账号操作
            Goto 退出结尾
        End If

        //这里是正常的退出界面的应对 不细说了
        If 退出界面 Then
            //执行退出操作
            //判断退出结果
        End If
        If 退出成功界面 Then
            错误代码 = 0
            Exit Do //正常出口
        End If
        If 退出失败界面 Then
            错误代码=207 //退出失败错误 无法执行后续 重开app然后下一个账号操作
            Goto 退出结尾
        End If
        //其他日常界面应对不说了
        Delay 500
    Loop

    Rem 退出结尾

End Function

改动

错误代码进行了细化和分类  如果项目很大 那么错误代码细化和分类还是很有好处的 项目不大完全无需如此麻烦

1.无错误 错误代码=0 一切都在预计内 不需要任何额外操作

2.普通错误 错误代码1-100 不需要额外操作也不会影响后续模块的正常运行 只是最后日志多个提示而已

3.流程错误 错误代码 101-200 不需要额外操作 但是因为当前模块的操作无法完成 导致后续模块操作无法继续

4 重开app下一账号错误 错误代码201-300 需要重开app 然后进入下一个账号的流程 当前账号的后续操作无法继续

5 重开app重复当前账号错误 错误代码301-400 需要重开app 然后重复当前账号的流程 本次当前账号的后续操作无法继续

6 致命错误 错误代码401-500 要求停止脚本操作 自然当前账号的后续操作无法继续

在例子里面 在 登录 签到 日常 退出4个模块里面 我们遇到特殊的界面 只是对全局变量[错误代码]赋一个错误值 本身并没有太多针对性的操作 具体的针对某个错误代码值的针对操作是在 经过登录 签到 日常退出4个模块后的那个错误代码的if elseif  end if 结构 那里才是错误处理的部分 或者可以理解为 在 登录 签到 日常 退出4个模块里面 我门只是抛出异常 在4个模块之后的if结构里面才是处理异常

几种情况的模拟流程

1.遇到 账号密码错误界面  按照脚本流程走--》先获取对应的账号和密码  --》此时错误代码=0 没有任何异常错误->进入 登录()模块 –>因为错误代码=0 所以并没有跳过登录()模块的主代码--》进入登录模块主代码 开始运行登录流程—>遇到了登录界面输入账号和密码点击登录出现密码错误界面---》进行了如下操作 错误代码=203 //账号密码错误 无法执行后续 重开app然后下一个账号操作
Goto 登录结尾--》错误代码=203 并且跳出了登录模块—>进入到签到模块--》因为此时错误代码=203 根据签到模块的处理 是应该—》

ElseIf 错误代码 > 200 and 错误代码 <= 300 Then
//重开后下个账号错误[需要重开app 不执行当前模块操作 但是不是再这里重开app的]

goto 签到结尾

--》跳过了签到模块--》日常模块 也是因为 错误代码=203 一样跳过

---》退出模块 也是因为 错误代码=203 一样跳过

--》到了最后的异常错误处理的if elseif end if结构 根据错误代码=203来执行重开app 进行下一个账号的操作

原文地址:https://www.cnblogs.com/zjl8455482/p/10878544.html

时间: 2024-10-06 20:07:22

[手机按键备忘]常见的脚本结构思路的补充(强化了错误代码的处理部分个人向)的相关文章

[手机按键备忘]关于找动态图的常见处理手段和特殊应对

常见的动态图情况 1.我们要找的图它可能在一定范围内移动 2.还可能周围有一定的色彩变化和其他颜色或者形态变化干扰 3 有的虽然肉眼看不出变化 但是移动了一定距离  原来的找图就无法再找到了.随着上下或者左右位置变化产生了一些渐变 但是肉眼难以发觉 常见应对 1.应对原理:移动变化 闪光和其他干扰 导致图片发生了各种变化 但是总有不会变化固定的地方 我们可以以这部分不变动的区域为基础做图色来进行找图 2.常见的处理手段 一个是做透明图,我们可以把变动的区域当作背景给处理  不动的区域为图片区域

(网页的缓存控制)HTML配置no-cache(备忘) “Cache-control”常见的取值

HTML配置no-cache(备忘) No-cache配置 html表头如下 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <!-- HTTP 1.1 --> <meta http-equiv="pragma" content="no-cache"> <!-- HTTP 1.0 -->

linux下常用命令备忘

转自:Linux 命令集锦 linux下查看监听端口对应的进程 # lsof -i:9000 # lsof -Pnl +M -i4 如果退格键变成了:"^h". 终端连接unix删除退格键,按住CTL键同时按delete Linux搜索 # find / -name "xxx.conf" 查看linux是32位还是64位的命令 #file /sbin/init #getconf LONG_BIT #getconf -a 在Linux和Windows下都可以用nslo

调试android chrome web page简明备忘

必备工具 adb tools.android chrome 先开启手机调试模式 adb forward tcp:9919 localabstract:chromedevtoolsremote 成功会提示 * daemon not running. starting it now on port 5037 * * daemon started successfully * 不成功的话用这个命令再试 adb kill-server 接着打开下面的链接,这里的9919是上面adb命令中指定的 http

移动端开发备忘

这是一些移动端开发的备忘记录. <meta> 元素 <meta name=“viewport” content=“width=device-width, initial-scale=1.0,maximum-scale=1.0, user-scalable=no”/> width:宽度(数值 / device-width)(范围从200 到10,000,默认为980 像素) height:高度(数值 / device-height)(范围从223 到10,000) initial-s

Nmap备忘单:从探索到漏洞利用(Part 4)

这是我们的Nmap备忘单的第四部分(Part 1. Part 2. Part 3).本文中我们将讨论更多东西关于扫描防火墙,IDS / IPS 逃逸,Web服务器渗透测试等.在此之前,我们应该了解一下防火墙的一些基础知识以便绕过它. 什么是防火墙? 防火墙是用来控制网络访问的软件或硬件.分为以下两类:1.基于主机的防火墙:2.基于网络的防火墙. 基于主机的防火墙 这是在单台主机上运行的软件,用来控制入站流量(从网络向主机)和出站流量(从主机向网络).这些软件安装于操作系统之上,常见例子就是Lin

Nmap备忘单:从探索到漏洞利用(Part 2)

这是我们的第二期NMAP备忘单(第一期在此).基本上,我们将讨论一些高级NMAP扫描的技术,我们将进行一个中间人攻击(MITM).现在,游戏开始了. TCP SYN扫描 SYN扫描是默认的且最流行的扫描选项是有一定原因的.它可以在不受防火墙限制的高速网络每秒扫描数千个端口 .同时也是相对不显眼的和隐蔽的,因为它永远不会完成TCP连接. 命令:NMAP -sS 目标 TCP连接扫描 当SYN扫描不可用的时候,TCP连接扫描是默认的TCP扫描类型.这是在用户不具有发送RAW数据包的特权的情况下.不是

Zookeeper + Hadoop + Hbase部署备忘

网上类似的文章很多,本文只是记录下来备忘.本文分四大步骤: 准备工作.安装zookeeper.安装hadoop.安装hbase,下面分别详细介绍: 一.准备工作 1. 下载 zookeeper.hadoop.hbase三个压缩包并放入/home/servers目录并解压 2. 安装JDK (略) 3. 统一集群计算机名 本次用于测试一共5台,分别命名为release-master,slave1,slave2,slave3,slave4(可使用hostname slave1类似的命令临时修改) 4

AngularJS之备忘与诀窍

译自:<angularjs> 备忘与诀窍 目前为止,之前的章节已经覆盖了Angular所有功能结构中的大多数,包括指令,服务,控制器,资源以及其它内容.但是我们知道有时候仅仅阅读是不够的.有时候,我们并不在乎那些功能机制是如果运行的,我们仅仅想知道如何用AngularJS去做实现一个具体功能. 在这一章中,我么视图给出完整的样例代码,并且对这些样例代码仅仅给出少量的信息和解释,这些代码解决是我们在大多数Web应用中碰到的通用问题.这些代码没有具体的先后次序,你尽可以跳到你关心的小节先睹为快或者