如何做一个带超时时间的自定义指令?
评论
收藏

如何做一个带超时时间的自定义指令?

经验分享
曾诚
2024-07-29 15:40·浏览量:1079
曾诚
发布于 2024-07-29 15:401079浏览

   相信大家都知道影刀自带指令都有一个超时时间的功能,那么这个功能我们在自己做指令的时候是不知道该怎么实现的,刚好最近看到有小伙伴发一个手机获取元素指令的快速方式,我这边根据这个,自己写了一个类似超时时间的功能指令,以此来弥补指令的不足。

   以下以xpath为主(不想写那么多,太麻烦了)

   1.首先,创建一个手机自定义指令,然后把影刀自带指令需要的参数全部复制一遍,并且我们新增了一个超时时间的字段,设置默认值为20,也就是20秒,然后再建一个子流程,和原来指令的参数一样,没有超时时间

2.在子流程里把传入的参数全部填写到指令里(我这边只写了xpath的一种情况,作为演示)

3.在主流程中,我们做一个时间循环,并且每次都是1秒,这样就做到了等待的效果

4.光等待可不行,我们要的是主要的功能也在运行,所以我们就可以使用市场指令里的并发子流程

5.流程名我们可以填我们的子流程这个名字,流程参数嘛,就按要求字典传参就好

6.看到这里,就不禁思考,返回的元素对象我们怎么获取到呢?并发调用子流程这个指令貌似没有返回参数这个功能。那我们就要利用一个数据结构的特性了,那就是--字典,众所周知,字典传到别的函数或者流程,他们依然共用一块内存地址,那我们现在就可以利用这一关联特性来传参了。首先在子流程里把输出的参数改为接收参数,那接收的参数就是一个字典啦

7.在主流程创建一个字典,并在并发调用子流程里传入这个参数

8.然后在子流程里把我们的最终结果放在这个字典里

9.在主流程循环等待里不断检测是否有一个叫元素的键值对存在,如果存在,设置返回值并退出当前流程,如果不存在,则继续等待

10.循环结束后,说明没有获取到元素对象,加上raise,将错误结果返回出去

11.虽然很多功能没有写,但是为了保证严谨性,或者刁民把超时时间设置的贼大,大到指令本身超时报错,所以我们新增一个报错处理

12.美化一下指令

13.保存后发版一下,在流程里看看效果


   总结:总体的效果就是这样啦,因为我比较懒,所以就只做了xpath一种选项,如果小伙伴有需要,可以仿造自行编写指令,该思路适用绝大多数场景。

   总之,编写指令(函数、模块、类等)的好处就是:提高代码的重复使用,提高开发效率,简化代码,增强代码的可读性,促进团队协作。希望大家能养成这个好习惯,真正的让自动化走入生活中,避免走重复的路。

拜拜

收藏1
全部评论1
最新
发布评论
评论