前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >selenium2java通过接口获取并注入cookies

selenium2java通过接口获取并注入cookies

作者头像
FunTester
发布2019-10-08 16:27:40
7290
发布2019-10-08 16:27:40
举报
文章被收录于专栏:FunTesterFunTester

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

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

代码语言:javascript
复制
    public void loginByApi() throws InterruptedException, NoSuchAlgorithmException, JSONException, IOException {
        ApiLibrary apiLibrary = new ApiLibrary(getUserName(), getUserPassWord());//实例化接口类
        Map<String, String> cookies = apiLibrary.getCookiesArguments();//获取cookies信息
        addCookie(cookies);//向浏览器插入cookies
        sleep(1);//休眠等待
        refresh();//刷新
    }

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

代码语言:javascript
复制
    //获取cookies,map集合
    public Map<String, String> getCookiesArguments() throws JSONException, IOException {
        Map<String, String> cookiesArgs = new HashMap<String, String>();//创建存放cookies的map集合
        CloseableHttpClient httpClient = HttpClients.createDefault();//创建并实例化连接对象
        JSONObject jsonObject = new JSONObject();//创建并实例化json对象
        jsonObject.put("did", "web");//设置登录类型
        jsonObject.put("telnum", userMobile);//设置帐号
        jsonObject.put("password", passWord);//设置密码
        output(userMobile);
        output(passWord);
        String arguments = changeJsonToArguments(jsonObject);//将json对象转化为接口参数
        String url = "http://beta-web.gaotu100.com/user/web/login";//接口地址
        HttpPost httpPost = new HttpPost(url + arguments);//创建并实例化post请求连接
        CloseableHttpResponse response = httpClient.execute(httpPost);//执行请求获取响应
        output(response.getStatusLine().getStatusCode());//输出状态码
        if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
            output("返回状态错误!");
        }
        HttpEntity entity = response.getEntity(); //获取响应实体
        JSONObject ssString = new JSONObject(EntityUtils.toString(entity));//获取响应实体的json数据
        output(ssString.toString());
        //获取相应数据
        String chat_app_id = ssString.getString("chat_app_id");
        String chat_name = ssString.getString("chat_name");
        String chat_user_sig = ssString.getString("chat_user_sig");
        String name = urlEncoderText(ssString.getString("name"));//对昵称进行转码
        String sid = ssString.getString("session_id");
        String role = "0";//默认为0
        //将数据存入map集合中
        cookiesArgs.put("chat_app_id", chat_app_id);
        cookiesArgs.put("chat_name", chat_name);
        cookiesArgs.put("chat_user_sig", chat_user_sig);
        cookiesArgs.put("name", name);
        cookiesArgs.put("sid", sid);
        cookiesArgs.put("role", role);
        httpClient.close();//关闭链接
        return cookiesArgs;//返回map集合
    }

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

代码语言:javascript
复制
    public void addCookie(Map<String, String> args) {
        Set<String> keys = args.keySet();
        for(String key : keys){
            driver.manage().addCookie(new Cookie(key, args.get(key)));
        }
    }
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FunTester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档