2022年的某天,我打开某精灵写完脚本,准备生成可执行包做测试,突然发现生成失败,原来是某精灵收费了。
考虑到某精灵在使用上各种函数的缺失,还有代码风格的杂乱,我直接转战到C#上。
重拾C语言语法,让我热泪盈眶,考虑到之前写脚本时添加了各种异常处理,让代码变得晦涩难读,于是就整理了一下思路,准备设计一套自动化脚本编程框架,这便是今天这篇文章产生的原因。
首先,每个自动化脚本都有一套正确的完整的执行流程,全部正确执行完毕后,即可达到想要的结果。
但是执行过程中总会存在错误结果,这些异常结果会干扰下一步执行的环境。
比如当脚本想保存一个文档,首先需要鼠标点击“文件”菜单,然后等菜单界面出现,再点击“保存”按钮。
![](https://i-blog.csdnimg.cn/blog_migrate/cc1417b8f260e5484f211a30b35b5c5e.png)
但实际上可能会出现点击“文件”菜单失灵了,鼠标事件没发出去,或者点到了“编辑”菜单按钮上,跳出了另类菜单。
![](https://i-blog.csdnimg.cn/blog_migrate/ef0121192438aef589bb6c602f8d1ffa.png)
所以脚本如果接着运行去点击“保存”按钮,肯定会出现不可预料的各种问题。
自动化脚本必须严格控制这种意外情况的发生,于是就会在每个步骤执行后都要对反馈结果做出判断。
一般来说,脚本每一步执行后都有三种结果:
执行成功,进行下一步。
执行失效,重新执行一次。
执行错误,判断当前错误环境并返回到此环境下可执行的步骤前。
执行错误的情况,就比如点击“文件”按钮时,因不明原因跳出了编辑菜单,此时想再重新执行点击“文件”菜单并保存的步骤会出现问题,鼠标放到“文件”菜单后,菜单已经跳转出来了。
![](https://i-blog.csdnimg.cn/blog_migrate/fb648617980d9af38ac1a1dd4f989557.png)
再次点击“文件”菜单,菜单直接收回。
![](https://i-blog.csdnimg.cn/blog_migrate/b9c2907a13477a4d72e54a103a9ebdfc.png)
所以这种情况下需要对错误环境进行初始化,把“编辑”菜单收回后,再返回到点击“文件”菜单并保存的流程上。
因此每一个当前执行步骤都会有如下的流程结果:
![](https://i-blog.csdnimg.cn/blog_migrate/7f63ce9c9e75f86656fa1f09064f03ee.png)
此流程便是一套完整的脚本自动化流程。
但在此流程的基础上进行编程时,会存在一个问题,执行完之后有多个if来判断执行反馈结果,然后可能还会存在跳转步骤的情况。
所以最终在自动化脚本写完后,会发现代码极其的紊乱,各种穿插调用,解读性非常差。而且后续测试出现问题,需要维护时,无论是改动量还是错误定位都是十分困难的。
因此,接下来的代码篇便是以C语言为例,介绍一套脚本自动化编程框架,用于整合这些紊乱的编程风格,让代码更有可读性,使得脚本程序代码无论是执行流程还是错误处理,都能让维护者(包括编写者)一目了然。