解决了token的关联问题-原来和用户名和密码加密有关

上一篇 / 下一篇  2016-03-03 18:20:16 / 个人分类:个人日志

背景:录制预约流程的脚本,但是脚本中有一个token,是动态的值。每一次进行预约,必须token正确,才能预约成功。类似LR示例网站中进行登录操作中需要的sessionid

 

过程:由于之前在湖南版本的项目中遇到过这个问题,因此此次早有准备,知道必须对token的值进行关联。而且上海版本是复用的湖南版本的代码,因此决定复用之前湖南版本的关联函数。如下:

web_reg_save_param_ex(

"ParamName=TokenNum",

"LB=<input type=\"hidden\" name=\"token\" value=\"",

"RB=\" />",

SEARCH_FILTERS,

"Scope=Body",

"RequestUrl=*/submitOrder.action*",

LAST);


在回放脚本的过程中,发现脚本报错了,提示检查左右边界是否正确。于是找到token第一次出现的地方,发现token是在web_submit_data();第一次出现,因此明确,token肯定是放置在web_submit_data();之前。然后在服务器返回值中,找到了token,如下:

<input type="hidden" name="token" value="1bf770fb-de49-4b65-8734-9400e077da6b" />


 

对比上面缩写的检查点,发现并没有写错。于是怀疑是不是左右边界不对,于是继续各种找,通过在网站中F12查找,找到网站中如下显示token

<input type="hidden" value="6c317bd2-abec-4260-aaee-1e61188f2644" name="token">


 

于是修改关联函数,重新回放脚本,发现还是报错。

 

到这里的时候,非常的困惑。和湖南版本几乎一样,整个预约流程传递的数据也一样,不知道为什么就是在关联token这里出错了。其中各种尝试,各种出错。然后今天决定重新录一次脚本,因为脚本已经被我修改得面目全非了。录了之后,也是各种找token在服务器返回值出现的地方。在点中的时候,无意中发现可以通过在服务器返回值中直接关联,于是就尝试了一下,如下操作:(选中需要关联的内容,然后创建关联,LR就会自动创建)


 

LR创建的关联如下:

web_reg_save_param_ex(

"ParamName=CorrelationParameter_token",

"LB= value=\"",

"RB=\" ",

SEARCH_FILTERS,

"Scope=Body",

"RequestUrl=*/submitOrder.action*",

LAST);


 

 

LR自动创建之后,点了回放,回放成功了,而且网站中也有了预约的订单。但是打开的扩展日志中却发现,token的值并不是正确的。意识到可能LR写的边界值能够符合的范围太多了,于是决定多写一点边界值,如下:

web_reg_save_param_ex(

"ParamName=CorrelationParameter_token",

"LB=name=\"token\" value=\"",

"RB=\" ",

SEARCH_FILTERS,

"Scope=Body",

"RequestUrl=*/submitOrder.action*",

LAST);


 

然后回放回放回放,回放了多次,发现成功了,而且回访日志中token取值是正确的。如下:

token=2b6e69be-35d6-4167-a071-3b6179351933
 

 

而且网站中也有了实际预约的订单了,真的非常高兴,终于解决了!

 

 

总结:1.其实我现在还是不知道问题出在了那里。Token的左右边界其实是我第一次在服务器返回值中找到的那样。但是不知道为什么不成功。对比第一次的和后面成功的关联函数,我只是边界值写多了一点而已。

2.所以呢,关联函数要注意的就是就算认为找准了边界值,也可以尝试边界值写长或者写短一点,各种尝试。

3.还有就是关联函数的位置也很重要,一定要放对位置。



后续:今天又录制了一整个预约流程的脚本,包括预约和退号。按照昨天录制的预约流程的脚本,一样设置的关联,结果回放又报错了。Token关联又失败。这次真是奇了怪了,一样的脚本,只是后面多了一些业务流程,怎么会错呢?

于是我决定把昨天上半部分的脚本(预约)+今天录制的后半部分脚本(退号)放到一个新的脚本中,看是否能够成功。结果显示,还是报错。于是决定一个一个业务进行排除。首先把昨天成功了的预约脚本中的登录操作,放到今天新的脚本中,结果发现报错了。于是就发现了,原来错误出现在登录的用户名和密码那块。因为录制出来的登录名和密码是加密显示,类似于MTg3NzQ5NzAwNjM=,我在脚本中,硬是改成了实际网站中登录的用户名,因此导致之后脚本中的token获取失败,因为根本就没有登录成功,也没有进行预约操作。回想起之前,在登录处设置了检查点检查用户名是否存在,一直检查不到,还很奇怪,也没有深究,看来问题是出现在这里。

于是新的问题出现了:这样的用户名和密码,我如何参数化呢?


日历

« 2024-04-18  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 53514
  • 日志数: 16
  • 建立时间: 2015-11-16
  • 更新时间: 2016-04-14

RSS订阅

Open Toolbar