不打开登陆界面执行Web自动化测试

自动化测试:不打开登陆界面操作

背景

在自动化测试时,经常会遇到不打开登陆界面直接执行某个url操作的需求,而该URL在浏览器中执行的时候,是不允许匿名执行的。在不使用selenium模拟用户打开登陆界面的前提下,使用HttpURLConnection可以不用依赖其他非java内置包。

获取POST参数

打开浏览器, F12 打开Network,查看Request和response数据

代码

package testing;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;


public class HttpUrlConnDemo {
	
	private String cookieStr = "";
	
	public String getCookieStr() {
		return cookieStr;
	}

	public void setCookieStr(String cookieStr) {
		this.cookieStr = cookieStr;
	}

	public void getCookieFromResponse(URL url, String params) throws IOException{
		String returnstr = "";
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		conn.setDoOutput(true);
		conn.addRequestProperty("Connection", "keep-alive");
		conn.addRequestProperty("Content-Type", "application/json;charset=UTF-8");
		conn.setRequestMethod("POST");
		DataOutputStream out = new DataOutputStream(conn.getOutputStream());
		out.write(params.getBytes());
		out.flush();
		if(conn.getResponseCode() == 200) {
			Map<String,List<String>> headers = conn.getHeaderFields();
			for(Entry<String, List<String>> entry: headers.entrySet()) {
				String key = entry.getKey();
				if ("Set-Cookie".equals(key)){
					List<String> v = entry.getValue();					
					for (String str : v) {
						returnstr +=str;
					}					
					break;
				}
			}
		}
		setCookieStr(returnstr);
		out.close();
		conn.disconnect();
	}
	
	public void requestWithCookie(URL url, String cookiestr) throws IOException{
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		conn.setDoOutput(true);
		conn.addRequestProperty("Connection", "keep-alive");
		conn.addRequestProperty("Content-Type", "application/json;charset=UTF-8");
		conn.addRequestProperty("X-Powered-By","SNMW-WEB1.0");
		conn.addRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36");
		conn.addRequestProperty("Cookie", cookiestr);
		conn.setRequestMethod("GET");
		
		BufferedReader in = new BufferedReader(
				  new InputStreamReader(conn.getInputStream()));
		
		String inputLine;
		StringBuffer content = new StringBuffer();
		while ((inputLine = in.readLine()) != null) {
		    content.append(inputLine);
		    System.out.print(inputLine);
		}
		in.close();
	}
	
	
	public String getParam(Map<String,String> param){
        StringBuilder str=new StringBuilder();
        str.append("{\"");
        int size=0;
        for (Map.Entry<String, String> m :param.entrySet())  {
            str.append(m.getKey());
            str.append("\":\"");
            str.append(m.getValue());
            str.append("\"");
            if(size<param.size()-1){
                str.append(",\"");
            }
            size++;
        }
        str.append("}");
        System.out.println(str.toString());
        return str.toString();
    }

	public static void main(String[] args) throws IOException {
		URL url = new URL("http://XXXXXXXX.com/XXXXX/login");
		HttpUrlConnDemo demo = new HttpUrlConnDemo();
		Map<String, String> m = new HashMap<String, String>();
		m.put("loginName", "xxx");
		m.put("password", "xxx");
		demo.getCookieFromResponse(url, demo.getParam(m));
		System.out.println(demo.getCookieStr());
		
		URL newurl = new URL("http://XXXXXXXX.com/XXXXX/xxxx?dateStr=20190508&type=1");
		demo.requestWithCookie(newurl, demo.getCookieStr());	
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Selenium IDE是一款用于Web自动化测试的浏览器插件。它可以记录和回放用户在浏览器中的操作,以便进行自动化测试。以下是使用Selenium IDE进行Web自动化测试的步骤: 1. 安装Selenium IDE插件:在浏览器的插件商店中搜索Selenium IDE,并安装到浏览器中。 2. 打开Selenium IDE:在浏览器中点击Selenium IDE插件的图标,打开Selenium IDE。 3. 录制测试用例:点击Selenium IDE界面上的录制按钮,开始录制测试用例。在浏览器中进行各种操作,例如点击链接、填写表单等。 4. 停止录制:完成测试用例的录制后,点击Selenium IDE界面上的停止按钮,停止录制。 5. 回放测试用例:点击Selenium IDE界面上的回放按钮,Selenium IDE会自动执行之前录制的测试用例,并在浏览器中模拟用户的操作。 6. 断言和验证:在测试用例中可以添加断言和验证,以确保测试结果的准确性。例如,可以验证页面上的某个元素是否存在,或者断言某个元素的文本内容是否符合预期。 7. 导出测试用例:完成测试用例的录制和回放后,可以将测试用例导出为不同的格式,例如HTML、Java、Python等,以便在不同的环境中执行测试用例。 请注意,Selenium IDE是一款简单易用的工具,适合初学者进行简单的Web自动化测试。如果需要进行更复杂的测试,可以考虑使用Selenium WebDriver,它提供了更多的功能和灵活性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值