影刀使用的一些思考(一)
影刀使用的一些思考(一)
1. 影刀是什么
影刀是一款自动化脚本工具,可以模拟人类操作,完成一些重复性的任务,比如刷视频、刷文章、刷评论等。
2. 学习影刀的初衷
- 想要学习自动化脚本,提高工作效率
- 配合当前Jenkins自动化部署,形成一套有效的自动化部署方案
- 一些每天必须做的重复任务交给他,自己有更多的时间去做其他的事情
- 现实需求,用影刀去开发游戏辅助器,用在体验公司游戏后的时间投入,避免掉队
- 未来想法,用影刀去刷一些想玩游戏的任务,把时间专注与游戏内容本身上,而不是在游戏里再上个班
3. 影刀与Jenkins的结合
3.1 认知误区
在学习过程中会有一种错觉,那就是影刀能替代Jenkins,Jenkins能做的影刀也能做。
这里必须把自己的想法掐死
确实能做,但能做并不代表做好。不要否定已经拥有的,不能去神话新了解的技术,如果有这种感觉那说明学的不到位,不了解核心优势。
3.2 影刀的优势
核心能力:
- 可视化拖拽、零代码 / 低代码,快速搭建流程
- 驱动浏览器、Windows 桌面、APP、ERP/CRM 等UI 交互
- 跨系统数据搬运、表单填写、报表导出、重复操作机器人
- 适合规则明确、重复、跨系统、带界面的业务流程
3.3 Jenkins的优势
核心能力:
- 代码提交触发、编译、测试、打包、部署、版本管理
- Pipeline-as-Code、插件生态、分布式构建、高并发调度
- 适合代码工程、持续集成、环境部署、测试自动化调度
3.4 场景选择:什么时候用谁?
用影刀(绝对不能用 Jenkins)
- 业务人员做跨系统数据录入 / 导出(Excel→网页→ERP)
- 财务 / 客服重复表单、对账、报表
- 电商订单处理、库存同步、评价回复
- 需模拟人点击、输入、截图、识别验证码的流程
- 非研发人员快速落地自动化,不想写代码
用 Jenkins(影刀完全做不了)
- 代码提交后自动编译、打包、单元测试
- 多环境(DEV/STG/UAT/PROD)持续部署
- 大规模接口 / 性能测试调度、结果统计
- 研发团队流水线管理、版本回滚、构建日志
- 容器化(Docker/K8s)、云原生部署流程
3.5 影刀与Jenkins的结合
- 暂未涉及到,仍在学习中
4. 影刀学习的一些思考
4.1 学习目标
- 拿到影刀的高级证书
- 熟练运用影刀,为工作减负
4.2 学习进度
- 证书分:初、中、高三级
- 当前在中级学习中
- 学习使用过程中,有了一些不同的想法与尝试
4.3 学习建议
说明:中级以前别有想法,甚至中级理论知识过半之前别有那么多想法,走了很多弯路,浪费很多时间
初级只要老老实实跟着教学走就行,不用想着优化,也不用想着调整,等中级再考虑。
4.4 网页自动化问题
4.4.1 打开网页方式
问题:打开网页方式
原因:觉得打开新网页是一种浪费,想封装一个获取已打开网页的流程,从而引发的思考,并与AI进行了讨论
核心思想:想放弃打开新网页这个指令
- 使用获得已打开的网页,并在获得失败后再打开目标地址,网页地址通过传入参数确定
- 无法确定具体网址,标题也不稳定,只有域名是不变的,使用通配获取
- 如:
*shop.yingdao.com*
- 判断获取到的网页的状态,如已经登录了的,是否要还原到初始状态,通过传入参数决定
- 流程结束,在主流程通过获取该网页操作
两种方式对比
方式一:打开新网页(推荐)
指令流程:启动浏览器 → 打开网页 → 执行操作 → 关闭网页
注:更彻底一点,直接使用非常用的浏览器,可以最大限度的保护数据
优点:
- 环境干净,不受之前页面、登录状态、缓存干扰
- 不会误操作到人工正在用的页面
- 流程稳定、可重复运行,适合定时 / 批量任务
- 关闭后不留痕迹,不容易越跑越卡
缺点:
- 每次都要重新加载、重新登录,稍微慢一点
适用场景:
- 日常自动化、定时任务、批量处理
- 爬虫、数据采集、提交表单
- 你希望流程稳定、可重复、不干扰人工
方式二:获取已打开网页
指令流程:找到当前已打开的浏览器页面 → 继续操作
优点:
- 不用重新登录、不用重新加载,速度快
- 适合接着人工操作继续跑
缺点(非常多坑):
- 页面可能被人工关掉、跳转、刷新 → 直接报错
- 多开页面时容易匹配错网址
- 登录过期、弹窗、广告都会导致流程不稳定
- 跑完不关闭,浏览器越开越卡,内存泄漏
适用场景:
- 辅助人工操作:人工先打开页面 → 影刀接着干活
- 临时、单次运行,不做长期定时任务
结合场景分析
以影刀商城登录页(shop.yingdao.com)为例:
如果用获取已打开网页
- 前提:必须人工先登录好
- 一旦页面关了、超时掉线、跳页,脚本直接崩
- 有不崩的方式,那就是处理大部分的错误,投入与产出完全失衡
如果用打开新网页
- 脚本可以自己:打开 → 登录 → 做业务 → 关闭
- 稳定、可重复、可定时
结论:强烈建议使用打开新网页方式
4.4.2 移动像素问题
核心想法:
能不能偷懒,就是只用简单的命令
打开网页->移动鼠标-> 点击 - >等待元素出现
重复操作,直到指定流程结束
核心思想就是点点点,时不时输入点文字,然后继续点点点,遇见丢失就加等待
虽然这种方法存在很大的问题(运行不稳定),但很适合当捷径走,主打一个有手就行
疑问:如此有了疑问,能不能在所有电脑上都有效
对移动像素产生了一些怀疑,如果是不同电脑的分辨率,移动像素是否会有误差?
结论:
会出问题,而且是跨设备运行最常见的坑。
- 能用元素定位就别用坐标
- 必须用坐标就用相对 / 百分比坐标
适用范围:
可以放心用的情况:
- 只在自己这一台电脑跑
- 不换显示器、不改分辨率、不改缩放
- 只是自己用的小脚本、临时脚本
4.4.3 元素库问题
4.4.3.1 元素库的拆分规则
如果一个网站都使用一个元素库,那这个元素库会非常庞大,而且元素的命名也会成为一个问题,同一类按钮的命名很难写,并且在使用时也会造成困扰。
尝试用如:login_btn_autologin 这种方式命名 登录功能的自动登录按钮,但在实际使用时就不得不加更多的前缀,已确保唯一,然后前缀长的离谱。
所以决定拆分库,并使用如下规则:
按平台/系统拆分
- 将不同业务系统的元素分开放置
- 如 [OA系统]、[CRM系统]、[财务系统]
- 不同系统,避免元素混淆,定位迅速
- 命名清晰,互不干扰
按页面/功能模块拆分
- 针对同一系统,按页面或功能创建文件夹
- 如 [登录页]、[订单列表页]、[用户管理页]
- 方便并行开发和后期维护
元素库命名规范:平台 + 系统模块(如果有) + 功能模块
例如:京东_OA系统_登录页
4.4.3.2 元素库的元素命名规范
命名原则:使用全英文,与现有的工作使用的命名规范一致,方便记忆
命名格式:前缀 + 名字
| 组件 | 前缀 |
|---|---|
| 按钮 | btn_ |
| 输入框 | input_ |
| 下拉框 | select_ |
| 选择框 | toggle_ |
| 文本域 | txt_ |
| 图片 | img_ |
| 链接 | link_ |
| 表格 | table_ |
| 表单 | form_ |
| 菜单 | menu_ |
| 工具栏 | toolbar_ |
| 分页 | page_ |
| 日期选择器 | datePicker_ |
| 时间选择器 | timePicker_ |
| 滑块 | slider_ |
| 进度条 | progress_ |
| 树形控件 | tree_ |
| 地图 | map_ |
| 图表 | chart_ |
| 视频 | video_ |
| 音频 | audio_ |
| 富文本编辑器 | rtxt_ |
| 弹窗 | tips_ |