51Testing软件测试论坛

标题: 为什么加了web_reg_find语句后,web_submit_data语句执行失败 [打印本页]

作者: 水易清    时间: 2010-9-29 16:11
标题: 为什么加了web_reg_find语句后,web_submit_data语句执行失败
本帖最后由 水易清 于 2010-9-29 16:36 编辑

测试用户注册,用户注册信息正确提交后,会跳转到注册成功页面,这里想在这个跳转成功页面上加一个检查点,检查“注册成功”文本。
web_reg_find("Text=注册成功",LAST);
web_submit_data("RegHotelAction_save.action",
                "Action=http://172.16.2.219:8080/directsale/RegHotelAction_save.action",
                "Method=POST",
                "RecContentType=text/html",
                "Referer=http://172.16.2.219:8080/directsale/EditHotelAction_toRegHotel.action",
                "Snapshot=t13.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=struts.token.name", "Value=struts.token", ENDITEM,
                "Name=struts.token", "Value=BDK4I0EK92UV1UKMTS17TIR2VAL4VG9U", ENDITEM,
                "Name=hotelInfo.nameCN", "Value=jiudian{NO}", ENDITEM,
                "Name=hotelInfo.shortSpell", "Value=jiudian{NO}", ENDITEM,
                "Name=hotelInfo.nameEN", "Value=", ENDITEM,
                "Name=hotelInfo.aliasName", "Value=jiudian{NO}", ENDITEM,
                "Name=hotelInfo.star", "Value=", ENDITEM,
                "Name=hotelInfo.country", "Value=", ENDITEM,
                "Name=hotelInfo.province", "Value=", ENDITEM,
                "Name=hotelInfo.city", "Value=", ENDITEM,
                "Name=hotelInfo.region", "Value=", ENDITEM,
                "Name=hotelInfo.address", "Value=", ENDITEM,
                "Name=hotelInfo.subRegion", "Value=", ENDITEM,
                "Name=hotelInfo.bizRegion", "Value=", ENDITEM,
                "Name=hotelInfo.environMent", "Value=", ENDITEM,
                "Name=hotelInfo.postCode", "Value=", ENDITEM,
                "Name=hotelInfo.tel1", "Value={NO}", ENDITEM,
                "Name=hotelInfo.tel2", "Value=", ENDITEM,
                "Name=hotelInfo.fax1", "Value=", ENDITEM,
                "Name=hotelInfo.fax2", "Value=", ENDITEM,
                "Name=hotelInfo.webUrl", "Value=", ENDITEM,
                "Name=hotelInfo.desc", "Value=", ENDITEM,
                "Name=adminType", "Value=0", ENDITEM,
                "Name=adminTypeId", "Value=2", ENDITEM,
                "Name=ycimUser.userName", "Value=jiudian{NO}", ENDITEM,
                "Name=ycimUser.plainPassWord", "Value=123456", ENDITEM,
                "Name=plainPassWord2", "Value=123456", ENDITEM,
                "Name=ycimUser.name", "Value=", ENDITEM,
                "Name=ycimUser.email", "Value=jiudian{NO}@sina.com", ENDITEM,
                "Name=validCode", "Value=aaaaaa", ENDITEM,
                LAST);

不加入web_reg_find下面语句执行通过,但实际数据未提交入数据库,但加入检查点后,报submit data:step failed
这是为什么呀?谁能帮我看看~~~~~~~~
作者: kuangquanshui    时间: 2010-9-29 16:22
不加验证点  运行能成功吗
作者: 水易清    时间: 2010-9-29 16:43
不加web_reg_find,可以成功的,但是实际数据没有提交到后台数据库中,因为页面采用AJAX,如果nameCN、userName重复,是直接在注册信息的页面上进行了提示,这种情况禁止提交。
这种情况下该怎么做呢
我理解的web_reg_find是不是说先注册一个页面,这个注册的页面,就是下面提交数据的页面。而我这里要检查的实际是下一个跳转页面的文本,注册成功的提示页面,是不是这里头的问题
作者: 独角兽妹妹    时间: 2010-9-29 16:59
我不没有用过,也不知道是怎么回事,你是否用web_submit_form试试
作者: kuangquanshui    时间: 2010-9-29 17:04
1、看你这个脚本应该也做参数化了nameCN、userName重复受限的问题应该可以解决了。
2、数据没写入到数据库里是不是因为某个字段添加时虽然给的提示也是成功,但程序没有对这个字段进行
    判断。(我现在测试的程序就是,可以重复添加但数据库里就存在一条)
3、使用web_find函数试试,注册函数放在操作动作的前面的这点应该没错。
作者: 水易清    时间: 2010-9-30 14:27
本帖最后由 水易清 于 2010-9-30 14:45 编辑

我发现我的脚本中的问题,未对JsessionID做关联!
我手动做关联,如下
web_reg_save_param("UserSession","LB=Set-Cookie: JSESSIONID=","RB=;",LAST);
lr_error_message("SessionId is: %s",lr_eval_string("{UserSession}"));
web_url("directsale",
                "URL=http://172.16.2.219:8080/directsale",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=",
                "Snapshot=t1.inf",
                "Mode=HTML",
                EXTRARES,
                "Url=/directsale/staticmedia/js/jquery/i18n/messages_cn.js", "Referer=http://172.16.2.219:8080/directsale/HomePageAction_edit.action", ENDITEM,
                "Url=/directsale/staticmedia/images/bg_nav_mobile.gif", "Referer=http://172.16.2.219:8080/directsale/HomePageAction_edit.action", ENDITEM,
                "Url=/directsale/staticmedia/images/navigations.png", "Referer=http://172.16.2.219:8080/directsale/HomePageAction_edit.action", ENDITEM,
                "Url=/directsale/staticmedia/images/icons/icon_mobile.gif", "Referer=http://172.16.2.219:8080/directsale/HomePageAction_edit.action", ENDITEM,
                LAST);

web_link("登录",
                "Text=登录",
                "Snapshot=t2.inf",
                EXTRARES,
                "Url=staticmedia/images/tit_regist.jpg", ENDITEM,
                "Url=staticmedia/images/bg_regist.jpg", ENDITEM,
                LAST);
########################
web_link中用到jsessionid原来在t2.inf-》t2.RequestHeader.txt中。下面附一下t2.inf文件内容,和t2.RequestHeader.txt文件内容
作者: 水易清    时间: 2010-9-30 14:33
t2.inf内容如下
[t2]
FileName1=t2.htm
URL1=http://172.16.2.219:8080/directsale/LogInAndOutAction_initPage.action
Total=6
RequestHeaderFile=t2_RequestHeader.txt
RequestBodyFile=NONE
ResponseHeaderFile=t2_ResponseHeader.txt
ContentType=text/html
FileName2=t2_login.css
URL2=http://172.16.2.219:8080/directsale/staticmedia/css/customer/login.css
FileName3=t2_login.html
URL3=http://172.16.2.219:8080/directsale/staticmedia/js/customer/security/login.js
FileName4=t2_tit_regist.jpg
URL4=http://172.16.2.219:8080/directsale/staticmedia/images/tit_regist.jpg
FileName5=t2_RangeCodeAction_getRangeCode.html
URL5=http://172.16.2.219:8080/directsale/RangeCodeAction_getRangeCode.action
FileName6=t2_bg_regist.jpg
URL6=http://172.16.2.219:8080/directsale/staticmedia/images/bg_regist.jpg
[ProtocolInfo]
ProtocolId=QTWeb

########################
t2.RequestHeader.txt内容如下
GET /directsale/LogInAndOutAction_initPage.action HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
Referer: http://172.16.2.219:8080/directsale/HomePageAction_edit.action
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Host: 172.16.2.219:8080
Connection: Keep-Alive
Cookie: JSESSIONID={UserSession}
作者: 水易清    时间: 2010-9-30 14:39
但我现在的问题是:
1:lr_error_message("SessionId is: %s",lr_eval_string("{UserSession}"));一句的结果是SessionId is:{UserSession}。没取到值,还是我用错了?
2:可不可以直接在t2.RequestHeader.txt中直接进行参数替换Cookie: JSESSIONID={UserSession}?
作者: 水易清    时间: 2010-9-30 14:42
这个是服务器返回sessionid的那部分内容
Action.c(6):     HTTP/1.1 200 OK\r\n
Action.c(6):     Server: Apache-Coyote/1.1\r\n
Action.c(6):     Set-Cookie: JSESSIONID=59EA01FBB7C3475DFB642D1ED15A0F39; Path=/directsale\r\n
Action.c(6):     Content-Type: text ml\r\n
Action.c(6):     Content-Length: 465\r\n
Action.c(6):     Date: Thu, 30 Sep 2010 05:45:52 GMT\r\n
Action.c(6):     \r\n
作者: kuangquanshui    时间: 2010-9-30 16:48
有点迷糊了    当时找你这个问题的时候 网上也有人说没做关联 。但没做关联和加这个函数有什么关系。如果是没做关联那直接回放的时候也应该报错吧。但为什么还能回放成功了。迷糊了
作者: 水易清    时间: 2010-9-30 16:56
是啊,回放成功我一直没懂,但是我自己出的第一个错找到原因了,应该放在web_url后打印,lr_error_message("SessionId is: %s",lr_eval_string("{UserSession}"));
作者: kuangquanshui    时间: 2010-9-30 18:46
回放成功不一定是对的。但没有关联应该给个错误信息吧   我是这么认为的。再听听高手怎么说。能力有限了




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2