从签到脚本到自动化(二)
来源:互联网 发布:淘宝客改版 编辑:程序博客网 时间:2024/05/01 20:25
我采用WebDriver觉得Web界面点击的方式,对于该需求并不怎么合适的。因此,再次考虑了一下,这种方案只适合自动化测试,不适合用来做功能。因此有了第二套方式。
二.模拟HTTP报文
就跟我们平时用httpwatch截取的一个个链接及参数一样,HTTP请求本质上就是报文的发送与接收。因此直接用模拟HTTP报文的方式,可以不打开浏览器,直接发送请求,避免各种页面异常情况的发生。
由于不是从页面登陆,我们就不用去考虑那些页面操作的部分,分析一下,其实整个流程只要发送两次报文就可以了:签到登陆以及发送签到信息部分。
1.登陆部分:
登陆请求时,通过看页面源码中的form或者用httpwatch截参数,我们会发现有三个参数:userId、userPwd、action,其中action中隐藏参数,在页面上是不需要修改的,但在发送请求时还是要带上的,服务端会根据这个action进行相应操作。源码如下:
01
WebConversation wc =
new
WebConversation();
02
WebRequest req =
new
PostMethodWebRequest(
"http://10.32.145.96:8899/wklog/login.do"
);
03
req.setParameter(
"userId"
, paramsLoader.getValue(
"userId"
));
04
req.setParameter(
"userPwd"
, paramsLoader.getValue(
"userPwd"
));
05
req.setParameter(
"action"
,
"login"
);
06
07
try
{
08
WebResponse resp = wc.getResponse(req);
09
if
(resp.getResponseCode() ==
200
&& !resp.getText().contains(
"用户密码错误"
))
10
logger.info(
"...登陆成功... "
+ resp.getText());
11
else
12
logger.info(
"...网络问题...返回码:"
+ resp.getResponseCode() +
"返回信息为:"
+ resp.getText());
13
}
catch
(IOException e) {
14
logger.info(e.toString());
15
}
catch
(SAXException e) {
16
logger.info(e.toString());
17
}
2.签到请求部分:
01
String date =
new
SimpleDateFormat(
"yyyy-MM-dd"
).format(
new
Date());
02
03
String signAction =
"http://10.32.145.96:8899/wklog/sign.do?action=createSignature"
;
04
req =
new
PostMethodWebRequest(signAction);
05
req.setParameter(
"remark"
,
"签到"
);
06
req.setParameter(
"beginDate"
, date);
07
req.setParameter(
"endDate"
, date);
08
09
try
{
10
WebResponse resp = wc.getResponse(req);
11
logger.info(Calendar.getInstance().getTime().toString() +
" : "
+ resp.getResponseCode() +
" "
+ resp.getResponseMessage());
12
if
(resp.getText().contains(
"签到成功!"
))
13
logger.info(
"...签到成功..."
);
14
else
15
logger.info(
"...签到不成功,以下为返回信息:"
+ resp.getText());
16
}
catch
(Exception e) {
17
logger.info(e.toString());
18
}
签到部分,要注意红色部分的WebConversation对象要与登陆时的WebConversation对象保持同一样,否则无法成功,因为Session必须保持一致。
签到部分有两个参数:beginDate与endDate,实际上是没有作用的,但服务端处理时逻辑有些问题,必须要这两个参数,由于咱看不到服务端的代码,因此还是传上去得了。
通过HTTP请求的方式,我们可以避免过多的异常,成功与失败,只要看返回的报文就可以了。然而这仍然不能满足签到脚本的需求,这个脚本不可能是由人每天执行,这样是没有意义的。我们需要每天早上晚上固定某个时刻执行一下,因此我们需要一个计划任务执行工具。
http://blog.xjl.me/?p=338
- 从签到脚本到自动化(二)
- 从签到脚本到自动化(一)
- 如何从jenkins传递测试地址到自动化脚本
- Foursquare从Check-in(签到)到Radar(雷达)的自然变迁
- 自动化测试工具AutoRunner之录制脚本(二)
- 【Git】 自动化Maven项目构建脚本(二)
- 自动化脚本腾讯云配置集群(四)自动化安装从节点的JDK+Hadoop
- python 自动化处理网页 (urllib , beatuifulsoup ,re)打卡签到
- Android自动化测试-从入门到入门(4)uiautomatorviewer
- 从自动化测试执行的角度谈自动化脚本维护
- Selenium自动化测试从入门到精通(基础操作、架构设计、定义接口、日志处理、脚本导出)
- 从程序员到测试工程师(二)
- 【李开复】从优秀到卓越 (二)
- 从源文件到可执行程序(二)
- 从wxdevcpp到code:block(二)
- android 从驱动到应用(二)
- 从程序员到项目经理(二)
- 从程序员到项目经理(二)
- 从签到脚本到自动化(一)
- js表单验证非法字符
- django官方文档——Django settings
- 继续记录JAVA学习
- 【转】 se43修改sap标准菜单,登陆界面
- 从签到脚本到自动化(二)
- Java返回今天之后或之前的若干天(精确到小时)
- 户口本大小
- Java开源软件六大帮派
- unity3d 重要函数方法
- 使用Java测试网络连通性的几种方法
- django官方文档——Settings详解
- 对新手的建议:如何成为一个合格的设计者
- 三步实现Eclipse中使用SVN插件进行团队开发和SVN最新可视化版本库安装