网易SmartAuto,中文编程就是爽
上一篇我们应该用中文编程发出来后,果不其然不少人很不以为然,还有直说“骗钱的,估计也没人会上当”。这样的反应是在预料之中。
行胜于言,我今天讲一个我们已经用了好几年的产品,用来做UI自动化测试的SmartAuto,就是用中文来写测试脚本的。
用SmartAuto写测试脚本的感觉是下面这样子的:
//请开始自动化脚本的编写,具体的语法说明可查看“帮助>API文档“
//notifyto: xxx@yyy
#宏 登录.mtxt <user> <pass>
点击我的
等待1秒
点击本地/下载
等待2秒
如果存在升级至无损音质#然后#点击屏幕中间
如果存在回到我的音乐#然后#点击回到我的音乐
如果存在一键扫描#然后#点击一键扫描#然后#等待2秒#然后#点击回到我的音乐
如果存在升级至无损音质#然后#点击屏幕中间
存在声音
存在MV
存在单曲
存在专辑
如果存在播放全部#然后#点击多选#然后#点击全选#然后#点击删除
如果存在确定将所选音乐从本地列表中移除吗#然后#点击同时删除本地文件左侧元素#然后#点击删除
存在暂无本地音乐
不知道大家看出来没有,这段脚本测试的是网易云音乐“我的音乐”里的某个功能。这里面“点击、删除”之类语法是动作,“如果”是逻辑判断,“存在”则是验证,另外还支持变量引用和宏引用(另一段自然语言脚本引用,类似函数调用)。
这样的编程语言体验怎么样,反正我们的感觉是挺爽的,好学好用。还有一个非常重要的优点是,在做完需求和交互之后,就可以写测试脚本了,不用等开发设计接口。
SmartAuto项目18年初立项,现有内部客户包括大家最熟悉的云音乐、严选、传媒、邮件,截止去年底用例数超过5000,执行次数超过10万。除了内部,华泰、民生等头部金融机构也在用。
所以我想中文编程有时候还是挺香的,关键要仔细设计。当然了大多数人也不会改变主意,他们会说你这个也不好,你这个虽然好但只能用来写写测试脚本,别的就不灵了。
相关文章:
网易SmartAuto,中文编程就是爽
上一篇我们应该用中文编程发出来后,果不其然不少人很不以为然,还有直说“骗钱的,估计也没人会上当”。这样的反应是在预料之中。 行胜于言,我今天讲一个我们已经用了好几年的产品,用来做UI自动化测试的SmartAuto&#…...
适配器模式那么强大,该怎么使用呢?
适配器模式是一种常用的设计模式,它可以将两个不兼容的接口进行转换,从而使它们之间可以进行交互。在业务开发中,我们经常需要将不同的系统或服务进行整合,而这些系统或服务往往有着不同的接口和数据格式。适配器模式提供了一种解…...
[极客大挑战 2019]PHP1
既然提到了备份网站估计也是存在着网站备份文件,可以先用御剑扫一下 啥都没扫出来,但是上回做文件备份的题目时收集了一些关于常用备份文件的文件名和后缀,可以直接使用burp抓包爆破,果然爆破出一个www.zip文件 访问下载好文件就有…...
PID 学习
采样数据: X 1 , X 2 , X 3 . . . , X ( k − 1 ) , X k X_1,X_2,X_3...,X_(k-1),X_k X1,X2,X3...,X(k−1),Xk E k S v − X k E_kS_v-X_k EkSv−Xk ( S v S_v Sv 是用户设定值) 比例算法: O U T P K p ∗ E k O U T 0 OUT_PK_p*…...
002. java.lang.NumberFormatException: Infinite or NaN,怎么破?
你好,我是YourBatman:当我老了,也写代码;不为别的,只为爱好。 📚前言 如果你工作超5年,100%遇到过这个异常:java.lang.NumberFormatException: Infinite or NaN Infinite中文释义…...
Vue常用的修饰符
Vue常用的修饰符有哪些有什么应用场景 修饰符是什么 在Vue中,修饰符处理了许多DOM事件的细节,让我们不再需要花大量的时间去处理这些烦恼的事情,而能有更多的精力专注于程序的逻辑处理 分类、有5种 表单修饰符事件修饰符鼠标按键修饰符键…...
freertos笔记-任务切换
红叶何时落水 任务切换,调用PendSV #define taskYIELD() portYIELD() #define portYIELD() \ { \portNVIC_INT_CTRL_REG portNVIC_PENDSVSET_BIT; \ 通过向中断控制和壮态寄存器 ICSR 的 bit28 写入 1 挂起 PendSV 来启动 PendSV 中断\__dsb( portSY_FULL_READ…...
企业电子招投标采购系统源码之登录页面-java spring cloud
信息数智化招采系统 服务框架:Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构:VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术:Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、…...
接口测试|Fiddler弱网测试
Fiddler进行弱网测试 弱网测试 概念:弱网看字面意思就是网络比较弱,我们通称为信号差,网速慢。 意义:模拟在地铁、隧道、电梯和车库等场景下使用APP ,网络会出现延时、中断和超时等情况。 在这里插入图片描述 Fidd…...
Linux-0.11 文件系统super.c详解
Linux-0.11 文件系统super.c详解 模块简介 该模块主要包含了对超级块的一些读写操作。 函数详解 lock_super static void lock_super(struct super_block * sb)该函数的作用是锁定bh块。 cli();//关中断while (sb->s_lock)//如果已经被锁定sleep_on(&(sb->s_wai…...
什么是ChatGPT、历史发展及应用领域
什么是ChatGPT ChatGPT是一种基于深度学习的自然语言处理技术,它可以生成高质量的自然语言文本,该技术是由OpenAI团队开发,旨在使计算机能够像人类一样理解和产生自然语言。ChatGPT使用了深度神经网络和自然语言处理技术,通过对大…...
Spring的创建与使用
目录 1.创建 Spring 项⽬ 1.1 创建一个 maven 项目 1.2 添加 spring 框架支持(spring-context/spring-beans) 2.将 Bean (对象) 存储到 Spring (容器) 中 2.1 在resources中创建一个spring配置文件 2.2 将 Bean 对象存储到 Spring 当中 2.2.1 创建 Bean 对象 2.2.2 将B…...
抖音Flutter插件的使用
Flutter是一个开源的移动应用程序开发框架,由谷歌开发,支持Android和iOS。随着Flutter的发展和成熟,许多人开始使用它来开发跨平台应用程序。本文将介绍如何使用抖音的Flutter插件,以增强Flutter应用程序的功能。 1. 安装Flutter…...
Debezium报错处理系列之六十八:No resolvable bootstrap urls given in bootstrap.servers
Debezium报错处理系列之六十八:No resolvable bootstrap urls given in bootstrap.servers 一、完整报错二、错误原因三、解决方法Debezium报错处理系列一:The db history topic is missing. Debezium报错处理系列二:Make sure that the same history topic isn‘t shared b…...
Python二级编程:分词去重
一、原题 参考编程模板,完善代码,实现以下功能。 利用 jieba 库实现中文分词。对分词后的列表进行去重处理,然后将分词结果中字符数大于等于 3 的词语&…...
Android Wifi开发——Wifi锁(十九)
有的时候我们需要 APP 在手机后台运行,但是会遇到手机一旦息屏或者断网,APP 无法正常运行的情况,这是因为手机屏幕关闭之后,并且其他的应用程序没有在使用 Wifi 的时候,系统大概在两分钟之后,会关闭 Wifi,使得 Wifi 处于睡眠状态。而 Wifi 锁 就是 Android 锁屏后 Wifi …...
Nginx的优化与防盗链
目录 一. 隐藏版本号方法一:配置文件隐藏版本号方法二:源代码隐藏版本号 修改用户与组缓存时间日志切割连接超时更改进程数配置网页压缩配置防盗链fpm参数优化 一. 隐藏版本号 可以使用 Fiddler 工具抓取数据包,查看 Nginx版本,也…...
STP协议
目录 STP的基本概念: 桥ID(Bridge ID): 根桥: 开销(Cost): RPC(根路径开销): Port ID: BPDU:(网桥协议…...
方法——检查参数的有效性
检查参数的有效性 绝大多数方法和构造方法对于传递给它们的参数都会有某些限制,比如对象引用不能为null,比如必须是正数等.你应该在文档中(或者注释中)清楚地指出所有这些限制,并且在方法体的开头检查参数,并且强制施加这些限制.如果做不到这一点,检测出错误的可能性就很小,即…...
七、Docker仓库之nexus搭建(四)
Nexus简介 使用 Docker 官方的 Registry 创建的仓库面临一些维护问题。比如某些镜像删除以后空间默认是不会回收的,需要一些命令去回收空间然后重启 Registry。在企业中把内部的一些工具包放入 Nexus 中是比较常见的做法,最新版本 Nexus3.x 全面支持 Doc…...
FreeTacMan系统:模块化触觉感知与多模态融合技术解析
1. FreeTacMan系统硬件架构解析FreeTacMan系统的硬件设计体现了模块化与轻量化的工程哲学。传感器主体通过主螺纹孔与夹持器基座刚性连接,这种设计可承受主要机械载荷。在相对侧,突出的定位结构与夹持器基座上的凹槽精密配合,实现了即插即用的…...
基于SpringBoot的工业设备远程运维台账毕业设计
博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在构建一个基于Spring Boot框架的工业设备远程运维台账系统以解决传统工业设备运维管理中存在的信息孤岛现象与数据处理效率低下问题。当前工业设备运维…...
外观专利和实用新型
外观设计专利与实用新型专利:技术创新的法律双翼 谨以此文,献给每一位在产品创新与外观设计之间寻求法律护城河的工程师、架构师与技术决策者。外观设计专利与实用新型专利,如同一对孪生兄弟——一个守护“美学表达”,一个护卫“实用改进”;一个关乎“看起来怎样”,一个关…...
ESP32嵌入式AI语音助手安全加固实战指南
1. 这不是“调个API就完事”的玩具项目,而是一次对嵌入式AI终端真实攻防边界的摸底你手头刚拿到一份标榜“ESP32本地LLM语音唤醒”的开源AI语音助手源码,烧录进开发板后,它能听懂“打开灯”“今天天气怎么样”,甚至能用合成语音回…...
Herqles架构:量子比特读取的硬件高效判别器设计与FPGA实现
1. 项目概述:量子比特读取的精度与速度困局在量子计算的世界里,有一个操作看似基础,却直接决定了整个系统的上限:量子比特的读取。你可以把它想象成计算机的“内存读取”指令,但这里读取的不是0或1的确定性电压&#x…...
Hexo 排坑记:删除所有文章后首页无法访问(Cannot GET)
背景 最近在使用 Hexo Butterfly 主题搭建个人博客时,遇到一个奇怪的问题:我把 source/_posts 下的所有文章都删掉后,重新生成并启动本地服务器,访问 http://localhost:4000 竟然直接显示 Cannot GET /,首页完全打不开…...
AI检测率太高论文过不了?这4个降AI率平台2026年别再错过了
随着AI技术在学术领域的广泛应用,论文中的AI痕迹越来越容易被检测系统识别。如何有效降低AIGC率、去除AI痕迹,已成为众多学者和学生关注的焦点。依托权威检测平台数据、高校实测结果及用户真实反馈,本文将深入解析当前最值得尝试的降AI率工具…...
92、【Agent】【OpenCode】edit 工具提示词
【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除 背景 上篇 blog 【Agent】【OpenCode】grep 工…...
20. JSX 支持
20. JSX 支持 1. 概述 TypeScript 提供了对 JSX 语法的原生支持,允许在 TypeScript 文件中编写 JSX/TSX 代码。JSX 是一种 JavaScript 的语法扩展,主要用于 React 等框架中描述用户界面。 ┌─────────────────────────────…...
2026学生开发者指南:AI时代最值得掌握的10个Java+AI技能点
写在前面2026年的技术圈有个共识——AI Agent不是“会不会来”,而是“已经全面渗透”。但很多学生朋友问我:“我是Java背景,是不是必须转Python才能搞AI?”我的回答一直是:恰恰相反。当AI从“写脚本”走向“构建系统”…...
