ITPub博客

首页 > 数据库 > 数据库开发技术 > selenium2java通过接口获取并注入cookies

selenium2java通过接口获取并注入cookies

原创 数据库开发技术 作者:FunTester 时间:2019-10-02 09:47:40 0 删除 编辑

本人在使用selenium做测试的过程中,很多用例都是需要在登录状态下才能运行的,之前都是封装一个登录的方法,在学习了httpclient之后,想到一个通过请求登录接口来获取cookies值,再向浏览器插入cookies,使用户处于登录状态。分享代码,供大家参考。

下面是封装好的登录方法:

1    public void loginByApi() throws InterruptedException, NoSuchAlgorithmException, JSONException, IOException {
2        ApiLibrary apiLibrary = new ApiLibrary(getUserName(), getUserPassWord());//实例化接口类
3        Map<String, String> cookies = apiLibrary.getCookiesArguments();//获取cookies信息
4        addCookie(cookies);//向浏览器插入cookies
5        sleep(1);//休眠等待
6        refresh();//刷新
7    }

下面是封装的api类的请求接口获取cookies的方法:

 1    //获取cookies,map集合
2    public Map<String, String> getCookiesArguments() throws JSONException, IOException {
3        Map<String, String> cookiesArgs = new HashMap<String, String>();//创建存放cookies的map集合
4        CloseableHttpClient httpClient = HttpClients.createDefault();//创建并实例化连接对象
5        JSONObject jsonObject = new JSONObject();//创建并实例化json对象
6        jsonObject.put("did", "web");//设置登录类型
7        jsonObject.put("telnum", userMobile);//设置帐号
8        jsonObject.put("password", passWord);//设置密码
9        output(userMobile);
10        output(passWord);
11        String arguments = changeJsonToArguments(jsonObject);//将json对象转化为接口参数
12        String url = "http://beta-web.gaotu100.com/user/web/login";//接口地址
13        HttpPost httpPost = new HttpPost(url + arguments);//创建并实例化post请求连接
14        CloseableHttpResponse response = httpClient.execute(httpPost);//执行请求获取响应
15        output(response.getStatusLine().getStatusCode());//输出状态码
16        if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
17            output("返回状态错误!");
18        }
19        HttpEntity entity = response.getEntity(); //获取响应实体
20        JSONObject ssString = new JSONObject(EntityUtils.toString(entity));//获取响应实体的json数据
21        output(ssString.toString());
22        //获取相应数据
23        String chat_app_id = ssString.getString("chat_app_id");
24        String chat_name = ssString.getString("chat_name");
25        String chat_user_sig = ssString.getString("chat_user_sig");
26        String name = urlEncoderText(ssString.getString("name"));//对昵称进行转码
27        String sid = ssString.getString("session_id");
28        String role = "0";//默认为0
29        //将数据存入map集合中
30        cookiesArgs.put("chat_app_id", chat_app_id);
31        cookiesArgs.put("chat_name", chat_name);
32        cookiesArgs.put("chat_user_sig", chat_user_sig);
33        cookiesArgs.put("name", name);
34        cookiesArgs.put("sid", sid);
35        cookiesArgs.put("role", role);
36        httpClient.close();//关闭链接
37        return cookiesArgs;//返回map集合
38    }

下面是向浏览器插入cookies的方法:

1    public void addCookie(Map<String, String> args) {
2        Set<String> keys = args.keySet();
3        for(String key : keys){
4            driver.manage().addCookie(new Cookie(key, args.get(key)));
5        }
6    }

技术类文章精选

  1. java一行代码打印心形

  2. Linux性能监控软件netdata中文汉化版

  3. 接口测试代码覆盖率(jacoco)方案分享

  4. 性能测试框架

  5. 如何在Linux命令行界面愉快进行性能测试

  6. 图解HTTP脑图

  7. 将swagger文档自动变成测试代码

  8. 五行代码构建静态博客

  9. 基于java的直线型接口测试框架初探

非技术文章精选

  1. 为什么选择软件测试作为职业道路?

  2. 写给所有人的编程思维

  3. 自动化测试的障碍

  4. 自动化测试的问题所在

  5. 成为优秀自动化测试工程师的7个步骤

  6. 未来10年软件测试的新趋势-上

  7. 未来10年软件测试的新趋势-上

  8. 17种软件测试人员常用的高效技能-上

  9. 17种软件测试人员常用的高效技能-下

大咖风采

  1. Tcloud 云测平台--集大成者

  2. Android App 测试工具及知识大集合

点击查看公众号地图

原文作者:FunTester;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-07-07

  • 博文量
    1037
  • 访问量
    420699