loadrunner学习坑太多2——登录操作回放失败解决方法
来源:互联网 发布:python while 编辑:程序博客网 时间:2024/06/06 07:37
1.先记录一下录制时的第一个坑:安装环境导致录制后回放失败,各种报错。
一开始我是直接在自己的笔记本上装的loadrunner,装完后照着学习视频里的操作,试着录了一个登录51cto博客的脚本,结果录制出来的脚本回放时各种报错。清掉所有无关的cookie和URL请求,照着教程里的环境设置重新录制了很多遍,还是报错。无奈只能装了个win7的虚拟机,完全干净的环境,只装一个loadrunner和IE,这下终于能成功回放脚本了。
2.再记录一个小坑:录制百度等网页时,提示安全证书错误,录制失败。
有一天晚上51cto博客登不进去了,大概是服务器问题,然后我就试着录制百度的登录操作。结果发现百度完全没法录,在loadrunner外面用IE登录百度正常,一到录制时就会报网页安全证书有问题,问是否继续访问,勉强录制出来的脚本回放也会失败。还有新浪微博录制时也有同样的问题。
后来在网上查了好久,在某个很隐蔽的角落里,发现有人说,录制百度时如果遇到安全证书的问题,可以在录制选项里,网络-端口映射-捕获级别,修改为WinINet级别数据,这样就可以正常录制了。
3.然后记录一个回放时遇到的大坑:录制登录操作,回放成功,但找不到用户名等登录信息,实际上回放时登录失败。
看着学习视频,我学会了一个神奇的操作叫“检查点”。由于loadrunner自带的运行时查看器有一些兼容性方面的问题,回放时网页上总是无法显示用户名,这样就无法判断回放时到底有没有登录成功。检查点就是在登录后跳转至原博客页面前,添加一个web_reg_find函数,搜索页面上有没有用户名/昵称的文本。
我在自己录制出来的脚本里添加检查点后,发现始终找不到需要的内容,试过用户名、昵称、登录账户(手机号/邮箱)都找不到,这说明回放过程中的登录操作是完全失败的。
然后我开始在网上各种查资料,研究了好几个晚上,试过修改一些录制和回放时的参数、增加一个协议、换一个网站等等各种操作,最终发现可能需要做一个“关联”。对于“关联”这个操作,我是这么理解的:
浏览器第一次访问服务器的时候,服务器在返回数据时会夹带一个暗号,之后浏览器每次与服务器通讯时都要对一下暗号。loadrunner录制时,记录下来服务器给的暗号(记为111)。回放时,loadrunner代替浏览器向服务器请求数据,这时服务器返回的暗号变了(记为222),但是loadrunner仍然用刚才录制时记录下来的111跟服务器来对暗号,服务器不认这个暗号了,自然就拒绝登录了,于是回放时就登录失败。
设置了关联之后,loadrunner在回放时,会找到服务器返回的那个暗号222,用这个暗号来代替录制时记录下来的暗号111来跟服务器通讯,这样就不会出现对不上号的情况了,回放就能成功。
具体操作,我是用的loadrunner提供的自动关联功能。录制完成之后,点击“扫描脚本中关联值”按钮,或Ctrl+F8,可以在关联结果中找到需要关联的数据,选中数据,点击关联,程序会自动创建一个关联,再次回放就能登录成功了,用检查点也可以找到登录信息了(昵称)。
另外还有一点很奇怪,录制时选择录制到action,再扫描关联就扫描不到,但是录制到init,就能扫描出来,不知道为啥,之后学关联的时候再研究。
4.接下来贴一段代码,记录一下目前我从脚本里学到的东西
vuser_init(){//进入博客首页web_url("xqtesting.blog.51cto.com", //stepname,vug树形视图中显示的名称,在自动事务处理中也可以用作事务的名称 "URL=http://xqtesting.blog.51cto.com/", //加载URL地址 "TargetFrame=", //包含当前链接、资源的Frame的名称 "Resource=0", //确认该URL是否是资源,0表示该URL不是资源,1表示该URL是资源 "RecContentType=text/html", //录制期间响应报头内容类型,如text/html,application/x-javascript等。它被用来确认目标URL是否是可录制的资源 "Referer=", //要提交该页面请求的URL(如果指向当前页面的页面位置被具体指明,则该属性被省略) "Snapshot=t26.inf", //快照文件名称,用来关联用的 "Mode=HTML", //录制模式,可能的取值有HTML/HTTP LAST); //参数列表结束的标志//web_url,统一资源定位符,用于加载指定的web页面(get请求)//int web_url( const char *StepName, const char *url, <List of Attributes>, [EXTRARES, <List of Resource Attributes>,] LAST ); //ENTRARES:分隔符,表示下列列表是由script、active、Java applet、flash产生的请求//这是自动插入的关联//Correlation comment - Do not change!Original value='azBvLkxOTlQCZBt9Kyk3bBp6CWACdyokNFw6SXwhdjNTAwBnf30YJA' Name ='CorrelationParameter_1'web_reg_save_param_ex( "ParamName=CorrelationParameter_1", "LB= content=\"", "RB===\">\n <title", SEARCH_FILTERS, "Scope=Body", "RequestUrl=*/index*", LAST);//转至登录界面web_url("index_2", "URL=http://home.51cto.com/index?reback=http://xqtesting.blog.51cto.com/", "TargetFrame=", "Resource=0", "RecContentType=text/html", "Referer=http://xqtesting.blog.51cto.com/", "Snapshot=t28.inf", "Mode=HTML", LAST);//登录信息 web_submit_data("index_4", "Action=http://home.51cto.com/index?reback=http://xqtesting.blog.51cto.com/", //执行表单提交的URL地址 "Method=POST", //表单提交方法,可取值有get,post "TargetFrame=", "RecContentType=text/html", "Referer=http://home.51cto.com/index?reback=http://xqtesting.blog.51cto.com/", "Mode=HTML", ITEMDATA, //属性和数据列表的分割标记,在Java语法中不可使用 "Name=_csrf", "Value={CorrelationParameter_1}==", ENDITEM, //enditem为列表中每个资源的结束标志符 "Name=LoginForm[username]", "Value=***", ENDITEM, "Name=LoginForm[password]", "Value=***", ENDITEM, "Name=LoginForm[rememberMe]", "Value=0", ENDITEM, "Name=login-button", "Value=登 录", ENDITEM, LAST);//web_submit_data,处理无状态或者上下文无关的表单提交。它用来生成表单的GET或POST请求,这些请求与Form自动生成的请求是一样的,发送这些请求时不需要表单上下文//函数形式:web_submit_data(const char *StepName,const char *Action,,ITEMDATA,,[EXTRARES,,]LAST);//数据域列表定义了表单提交的内容。由于此请求是上下文无关的,因此数据域包含了所有的隐含域。使用Form的编码规则组织数据域//数据域列表可以使用下面任意一种格式://"name=n1","value=v1",ENDITEM,//"name=n2","EncryptedValue=qwerty",ENDITEM//这是检查点,检查用户名(昵称),因为是reg函数所以要放在URL请求的前面web_reg_find("Text=***", LAST);//登录成功后跳转到博客首页web_url("xqtesting.blog.51cto.com_2", "URL=http://xqtesting.blog.51cto.com/", "TargetFrame=", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t32.inf", "Mode=HTML", LAST);return 0;}
- loadrunner学习坑太多2——登录操作回放失败解决方法
- loadrunner学习坑太多1——loadrunner11安装和破解
- Loadrunner 录制登录操作
- LoadRunner中脚本回放问题及解决方法(上)
- LoadRunner中脚本回放问题及解决方法(下)
- LoadRunner中脚本回放问题及解决方法(下)
- LoadRunner中脚本回放问题及解决方法(下)
- LoadRunner中脚本回放问题及解决方法(下)
- loadrunner之脚本回放
- LoadRunner 回放出错
- loadrunner 回放显示浏览器
- SQL2008 sa 登录失败解决方法
- “用户 'HP-2V47VI88M4GB/ASPNET' 登录失败”的解决方法
- LoadRunner回放的一些问题
- 自己总结前端web知识学习——太多太多(html/css/js/php)
- LoadRunner登录脚本认证失败的原因分析(六)
- loadrunner测试ajax框架的系统时,录制回放都没有报错,但是回放后系统中没有产生数据,解决方法
- 太多的失败
- 树搜索策略(上)
- wireshark长时间抓包分多个文件
- C++进阶—>malloc/free与new/delete的区别
- 【软考】OSI开放系统互联参考模型
- swagger在springBoot中的使用记录
- loadrunner学习坑太多2——登录操作回放失败解决方法
- unity功能记录--使用摄像机
- 除非世界如我所愿!2016春季“观潮会Chaos”完美收官!
- 如何从android手机将数据导出
- 收购波士顿动力之后,丰田又想和平衡车的发明者研发这样一款产品
- QQ浏览器500万奖励正版小说用户,网络文学“正版化”提速
- java调用qq聊天并显示在线状态
- 常用JVM选项
- 一篇新的文章<script>alert(0000)</script>