java cookie注入_selenium2java通过接口获取并注入cookies

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

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

1 public void loginByApi() throws InterruptedException, NoSuchAlgorithmException, JSONException, IOException {

2 ApiLibrary apiLibrary = new ApiLibrary(getUserName(), getUserPassWord());//实例化接口类

3 Map cookies = apiLibrary.getCookiesArguments();//获取cookies信息

4 addCookie(cookies);//向浏览器插入cookies

5 sleep(1);//休眠等待

6 refresh();//刷新

7 }

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

1 //获取cookies,map集合

2 public Map getCookiesArguments() throws JSONException, IOException {

3 Map cookiesArgs = new HashMap();//创建存放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 args) {

2 Set keys = args.keySet();

3 for(String key : keys){

4 driver.manage().addCookie(new Cookie(key, args.get(key)));

5 }

6 }

技术类文章精选

非技术文章精选

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值