您的位置:首页 > 编程语言 > Java开发

selenium2java通过请求接口获取并向浏览器插入cookies

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

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

[html] view
plain copy

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的方法:

[java] view
plain copy

//获取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的方法:

[java] view
plain copy

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)));  

    }  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐