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