需求分析
在自动化测试中,登录接口的验证码的处理有两种常见的方案,第一种是通过ocr识别,这种方式不能保证百分百正确,通常用在UI自动化测试中。第二种是去数据库中直接查询验证码,这种方式可以保证验证码百分百正确,一般验证码都是保存在redis中,通常用在接口自动化测试中。这里我们给出第二种方案。
代码实现
目录结构
│ .gitignore │ RedisCode.iml │ ├─.idea │ │ .gitignore │ │ misc.xml │ │ modules.xml │ │ uiDesigner.xml │ │ workspace.xml ├─out │ └─production │ └─RedisCode │ └─com │ └─chenguoxin │ RedisCode.class │ └─src └─com └─chenguoxin RedisCode.java
具体代码
RedisCode.java
package com.chenguoxin; import redis.clients.jedis.Jedis; import java.util.HashMap; import java.util.Map; /** * @author chenguoxin */ public class RedisCode { public static String getCode(String huanjing, String key) { Map<String, String[]> list = new HashMap<>(); list.put("ceshi-dsjj", new String[]{"项目的redis地址", "端口", "redis密码"}); String[] huanjinginfo = list.get(huanjing); // 创建Jedis对象,并指定Redis服务器的IP和端口 Jedis jedis = new Jedis(huanjinginfo[0], Integer.parseInt(huanjinginfo[1])); // 使用auth方法进行密码认证(如果有设置密码的话) jedis.auth(huanjinginfo[2]); jedis.select(5); // 通过键值获取value String value = jedis.get(key); System.out.println("Value: " + value); // 关闭连接 jedis.close(); return value; } }
BeanShell脚本
import com.chenguoxin.RedisCode; String huanjing = "ceshi-dsjj";//环境 String key = ${sessionId} String captcha = RedisCode.getCode(); vars.put("captcha", captcha);//设置获取到的验证码为全局变量
注意事项
IDEA运行redis多线程访问报错Exception in thread “main“ java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
解决方法
下载两个JAR包即可
托管下载地址:Central Repository: org/slf4j (maven.org)
下载 slf4j-api 和 slf4j-simple 即可解决
点进去以后选择版本,然后点击版本进入,找到.jar结尾的下载即可,api 和 simple版本要统一