selenium2java通過請求接口獲取並向瀏覽器插入cookies

本人在使用selenium做測試的過程中,很多用例都是需要在登錄狀態下才能運行的,之前都是封裝一個登錄的方法,在學習了httpclient之後,想到一個通過請求登錄接口來獲取cookies值,再向瀏覽器插入cookies,使用戶處於登錄狀態。分享代碼,供大家參考。

下面是封裝好的登錄方法:

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

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

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章