Https跳转到Http类型接口测试实践

发表于:2015-7-22 10:32

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:zhoujun    来源:51Testing软件测试网采编

  再度尝试
  接着就想尝试不通过https接口,通过直接访问web页的形式,获取cookie,首先当然想到了很熟悉的selenium,可是selenium需要打开浏览器,不是很方便。后来就想到了htmlunit ,这是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。项目可以模拟浏览器运行,是个没有界面的浏览器,运行速度也是非常迅速。
  使用Htmlunit非常简单:
  首先在Maven项目中添加配置项:
  <dependency>
  <groupId>net.sourceforge.htmlunit</groupId>
  <artifactId>htmlunit</artifactId>
  <version>2.15</version>
  </dependency>
  <dependency>
  使用Htmlunit提取cookie:
final WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setUseInsecureSSL(true);
webClient.getOptions().setJavaScriptEnabled(false);
webClient.getOptions().setCssEnabled(false);
HtmlPage page = null;
page = webClient.getPage(loginUrl);
HtmlElement corpid = (HtmlElement) page.getElementById("id_corpid");
HtmlElement corppw = (HtmlElement) page.getElementById("id_corppw");
corpid.click();
String username = ph.readValue("userName");
corpid.type(username);
corppw.click();
String password = new String(dec.decodeBuffer(ph.readValue("password")));
corppw.type(password);
List<HtmlButton> loginBtn = (List<HtmlButton>) page.getByXPath("//div[@id='corp']/form/div[@class='span2 offset7 controls']/button");
Page resultPage = loginBtn.get(0).click();
String EHRCookie = HtmlUnitUtil.getCookieHeader(webClient);
logger.info("获得openidpage cookie值: "+cookie);
return cookie;
  执行会发现已经将cookie提取出来:
  [INFO ]13:29:15,882,main,[Class]LoginUtil, [Method]getEHRCookie, 获得openidpage cookie值: JSESSIONID=8A1979AC21C24DD8622E41D89ABFF6F3.classa-***.org-8010; sessionid=23d2b3e737c34cb8d8898bbec94c6a11
  接着在Httpclient中加载提取的cookie访问http接口:
  //加载cookie
  httpGet.addHeader(new BasicHeader("Cookie",cookie));
  接着就可以不用管登录的过程用通常的方法继续进行接口测试了。
  总结
  在Https验证跳转到http的web系统的接口测试中,如果将Htmlunit和httpclient结合起来会简化登录验证过程,方便进行测试代码编写。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号