Web UI测试中如果要添加Cookie怎么办?
2018-11-29 11:48:10
Seagull

在Web UI的自动化测试中,需要在浏览器中添加cookie是比较常见的场景,比如登录功能,为了跳过验证码这一步,很多测试人员设计测试场景的时候,会选择直接跳过登录这一步,如果用户登录信息是用cookie进行保存,那么我们就可以通过在浏览器中直接设置cookie来跳过登录。


在WebDriver提供的API中,有一个直接设置Cookie对象的方法,如下:


WebDriver.manage().addCookie(Cookie);


在LuckyFrame V2.7.1的客户端版本中,已经增加了直接在用例中添加Cookie的功能,具体优化代码如下:


//把operationValue解析成Cookie对象列表
List<Cookie> cookies = buildCookie(operationValue);
if (null != cookies && cookies.size() > 0) {
     for (Cookie cookie : cookies) {
            wd.manage().addCookie(cookie);
                }
       }
private static List<Cookie> buildCookie(String operationValue) {
        if (StringUtils.isBlank(operationValue)) {
            return null;
        }
        try {
            //operationValue必须符合JSON数组对象格式
            JSONArray objects = JSON.parseArray(operationValue);
            if (null == objects) {
                return null;
            }
            List<Cookie> result = new ArrayList<>(objects.size());
            for (int i = 0; i < objects.size(); i++) {
                JSONObject jsonObject = objects.getJSONObject(i);
                if (null == jsonObject) {
                    continue;
                }
               //operationValue的JSONArray 中,KEY必须有以下几个
                String name = jsonObject.getString("name");
                String val = jsonObject.getString("val");
                String domain = jsonObject.getString("domain");
                String path = jsonObject.getString("path");
                //String expire = jsonObject.getString("expire");
                if (!StringUtils.isBlank(name) && !StringUtils.isBlank(val)) {
                    Cookie cookie = new Cookie(name, val, domain, path, null);
                    result.add(cookie);
                }
            }
            return result;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }


那么在编写LuckyFrame Web UI用例在添加Cookie的时候到底要注意哪些事项呢?

1、在【 方法 | 操作 】列选择 addcookie】方法

2、参数列填写 Cookie对象的Jsonarr,格式如下(如果你只需要一组cookie,那么只需要填写一组数据即可):


[{
	"name": "cookie1",
	"val": "uwijijknkndsnjssanndjdjnnrjkejnm",
	"domain": "",
	"path": ""
}, {
	"name": "cookie2",
	"val": "fdsaerewwqfdqwdscadsadsadefdafdsa",
	"domain": "",
	"path": ""
}]


填写方法如下图: