最近在测试google docs云业务,在录制了创建新文档的操作后,需要进行关联,每个文档都有一个ID,那么关联的话首先要将服务器生成的这个ID取出来,然后把下面用到此ID的所有链接都进行参数化,这样回放的时候才会真正成功的完成创建文档的操作。
开始在进行录制时,得到的创建文档的url的脚本
web_url("create",
"URL=https://docs.google.com/document/create?folder=0ALZWwXWNwhrNUk9PVA",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t13.inf",
"Mode=HTML",
EXTRARES,
"Url=https://ssl.gstatic.com/docs/documents/share/images/icons-7.png", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=https://ssl.gstatic.com/docs/common/jfk_sprite51.png", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=https://ssl.gstatic.com/ui/v1/disclosure/small-grey-disclosure-arrow-down.png", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=../static/document/client/js/351856489-kix_main_i18n_kix_app__zh_cn.js", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=https://ssl.gstatic.com/ui/v1/disclosure/small-grey-disclosure-arrow-up-down.png", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=https://ssl.gstatic.com/docs/presentations/images/spinner.gif", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=https://ssl.gstatic.com/gb/js/sem_feed2a2e2d54cd5f40fb4b5f5244fff2.js", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=../static/document/client/js/3891289192-kix_main_i18n_kix_tertiary__zh_cn.js", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0 rdot.gif", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=https://ssl.gstatic.com/scribe/sprite10_ebc72dd28fd4d84d065aa6e7cc97b753.png", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=https://ssl.gstatic.com/gb/images/s_513818bc.png", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=https://ssl.gstatic.com/scribe/searching.gif", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=https://ssl.gstatic.com/s2/profiles/images/silhouette200.png", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=../c/u/0/data/contactstore?ac=true&ct=true&gp=false&hl=zh-CN&id=personal&max=-1&out=js&tok&type=4", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=https://ssl.gstatic.com/docs/doclist/images/loading.gif", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=https://ssl.gstatic.com/ui/v1/menu/checkmark.png", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=https://ssl.gstatic.com/ui/v1/dialog/close-x.png", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/trash/read?id=1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0&token=AC4w5VhQoO_oMq5VfQFa9lj71bPyB8SqqQ%3A1341973079000", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/peruserchrome?id=1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0&token=AC4w5VhQoO_oMq5VfQFa9lj71bPyB8SqqQ%3A1341973079000", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/test?id=1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0&sid=5e18234728b52326&VER=8&token=AC4w5VhQoO_oMq5VfQFa9lj71bPyB8SqqQ%3A1341973079000&lsq=-1&u=03974857385217060086&w=1&MODE=init&zx=s9kt8m7aa3sf&t=1", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/test?id=1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0&sid=5e18234728b52326&VER=8&token=AC4w5VhQoO_oMq5VfQFa9lj71bPyB8SqqQ%3A1341973079000&lsq=-1&u=03974857385217060086&w=1&MODE=init&zx=ia3fg2vn8o6k&t=1", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=https://gg.google.com/csi?v=3&s=kix&action=edit_new&it=appLoad.2561,cursorMove.5,typeChar.3,basicEdit.3&e=docs_warm,docs_offline_warm,docs_offline_maybe_optout&rls=null&rt=", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
"Url=d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/test?id=1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0&sid=5e18234728b52326&VER=8&token=AC4w5VhQoO_oMq5VfQFa9lj71bPyB8SqqQ%3A1341973079000&lsq=-1&u=03974857385217060086&w=1&MODE=init&zx=gxeipgxotgsq&t=1", "Referer=https://docs.google.com/document/d/1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0/edit", ENDITEM,
LAST);
由脚步可以看出,服务器为此文档生成的ID为
1gVZW2KXuUK1uCui6S0-5Q9r-pDRHmca3aoU7IIRLhN0
那么我们就要把此ID进行参数化,首先在creat的url上写上
web_reg_save_param("responseText",
"LB=d/",
"RB=/edit",
"Search=All",
LAST);
注意左右边界。然后将下面所有出现的ID进行参数化。
但是,问题出现了。。。
回放的时候发现,服务器没有返回新的ID,即服务器端并没有真正创建新文档。
此时分析上面脚步发现,create的url里包含很多url请求,而在第一个请求后服务器生成了一个ID,但在下面的请求中就直接用到了此ID,而这些请求都包含在一个url中(即create的url),因此想到的方法就是首先把第一个请求和下面的请求分开,在第一个请求后用web_reg_save_param去获得ID,然后在后面要用的ID的请求中参数化。
因此改变了录制模式
Recording Options->Recording,选择HTML-based script后,点击advanced,Script type中选择第二个,下面的选项也选择第二个,即Record in separate steps and use concurrent groups.
接着再次录制,产生脚本
web_url("create",
"URL=https://docs.google.com/document/create?folder=0ALZWwXWNwhrNUk9PVA",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t38.inf",
"Mode=HTML",
LAST);
回放时在Replay log中发现此create产生了四个请求,并且服务器端生成了新的ID。此时,在上面再加上上述web_reg_save_param函数,并将下面脚本中所有以前的ID进行参数化。再次回放,打开google docs,发现文档创建成功。
总结:出现错误时,借助日志和必要的函数如web_reg_save_param分析客户端和服务器的交互,服务器的响应等信息来分析错误原因,并不断的尝试,相信问题一定会解决。
分享到:
相关推荐
Loadrunner11 中自动关联操作和手动关联操作是 Loadrunner 中非常重要的功能,它们可以帮助用户更好地优化脚本,提高测试效率和可靠性。在这里,我们将详细介绍自动关联和手动关联的操作步骤、原理和使用场景。 一...
#### 一、LoadRunner关联简介 LoadRunner是一种广泛使用的性能测试工具,用于评估软件系统的性能并识别潜在的问题。在LoadRunner中,“关联”是指捕获和管理动态变化的数据值的过程,这些数据值通常出现在Web应用...
- 若要使用LoadRunner自带的关联规则进行自动关联,需在**Recording Options** > **Internet Protocol** > **Correlation**中启用相关设置。 - 选中“Enable correlation during recording”,则在录制脚本过程中...
LoadRunner关联函数的使用可以帮助用户快速地处理web应用程序中的数据提取和参数传递。下面我们来详细地介绍LoadRunner关联函数的使用和优化。 一、LoadRunner关联函数的使用 LoadRunner关联函数可以通过 web_...
### 如何在LoadRunner脚本中进行关联(Correlation) #### 关联的必要性与原理 在LoadRunner脚本的创建过程中,关联是一项至关重要的技术,尤其在模拟真实用户交互时,确保脚本的准确性和可重复性。关联的主要目标是...
在 LoadRunner 中,我们可以通过 VuGen 的 Recording Log 来找到需要关联(Correlation)的值。 Recording Log 记录了浏览器与服务器之间的所有对话,我们可以从中找到需要关联的值,并将其用于脚本中。 VuGen 还...
通过以上步骤,我们不仅能够理解LoadRunner关联的基本原理,还能掌握其实际操作流程,这对于提升测试脚本的稳定性和准确性至关重要。关联技术的应用,确保了LoadRunner脚本能够在面对动态数据环境时仍保持高效和准确...
下面我们将详细探讨为何要在LoadRunner中进行关联,以及如何在LoadRunner脚本中实现这一操作。 **关联的必要性** 关联的主要原因是Web应用程序通常会产生动态数据,如Session ID、Token或随机生成的数值。这些动态...
### LoadRunner脚本中的关联...在LoadRunner中,关联是一项非常重要的技术,它能够帮助测试工程师解决由动态数据引起的脚本执行问题。通过合理运用关联技巧,可以显著提高脚本的稳定性和准确性,确保性能测试的有效性。
在使用LoadRunner过程中,可能会遇到各种问题,以下是一些常见问题及其解决办法: 1. 脚本乱码:当LoadRunner录制的脚本出现乱码时,可以在结束录制选项(Endit Recording Option)的Advanced设置中,将Support ...
标题“loadrunner关联函数.pdf”和描述“loadrunner关联函数.pdf”表明这篇文档主要关注LoadRunner这一性能测试工具中的关联函数(Correlation Function)。LoadRunner是一种由HP公司开发的软件,用于测试应用程序、...
一、关联原理 二、自动关联 三、手动关联 四、一边录制一边关联 五、关联函数Web_reg_save_param详解
这些内容将帮助用户在实际项目中更好地运用LoadRunner,提升测试的效率和准确性。 总的来说,《LoadRunner 中文使用手册》是一份全面的指南,无论你是初学者还是经验丰富的测试工程师,都能从中受益。通过深入学习...
### LoadRunner脚本关联动态数据的最简方法详解 #### 一、引言 在进行负载测试时,尤其是在使用LoadRunner工具时,关联(dynamic correlation)技术对于确保脚本的稳定性和准确性至关重要。关联的主要目的是处理那些...