需求分析
在自动化测试中,登录接口的验证码的处理有两种常见的方案,第一种是通过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版本要统一