LoadRunner录制:关联

一般请求中看到 hash strings, random strings, session ID 这种,就需要动态去获取该内容,这样就需要用到关联。

回放时自动关联

1. 录制脚本并执行。

2. 打开“Scan Action for Correlation”窗口,该窗口会询问用户是否要扫描脚本并建立关联,单击“yes”按钮,扫描脚本。

有多种方式可以打开“Scan Action for Correlation”窗口:

  • 方式一:选择 Vuser –> Scan Script for Correlations。
  • 方式二:同时按住 Ctrl + F8 即可调出该窗口。
  • 方式三:执行脚本,执行完毕后系统会自动跳出该窗口。

3. 扫描完后,可以在脚本下方的“Correlation Results”中看到扫描的结果。

4. 检查一下扫描的结果,选择要做关联的数据,然后单击“Correlation”按钮,逐次关联。

这里点击列出的关联条目,可以看到上面以Tree View 的方式对Record 和 Replay 的结果进行比对,方便确定要不要进行关联。

5. 重复步骤1 ~ 步骤4 ,直到所有需要做关联的数据都找出来为止。

手动进行关联方法一:自己写脚本添加关联

背景:

比如你在请求request15的时候需要用到 userid,结果你发现request2的Response里面有userid,那么你要在request2的前面添加关联脚本,假设保存到的参数为userid_result,那么在request15里面就可以直接像使用参数那样使用{userid_result} 。

前提条件

假设页面返回的部分 response 如下:

我们需要获取上面 <title>和 </title>之间的内容,保存到参数 TitleName里面,留着后边用。

那么我们需要在该页面请求的前面添加关联脚本。

添加方法:

1. 鼠标右键,选择 Insert –> New Step。

2. 在 Find Function 中输入 web_reg_save_param_ex,点击OK。

3. 编辑弹出框如下。

Parameter Name:获取的内容要保存到的参数名称,比如这里我想保存到TitleName里面,就输入TitleName。

Left Boundary:左边界。上面看左边界我们可以输入”title>“

Right Boundary:右边界。上面看右边界我们可以输入”</title“

Scope:表示查找范围,比如这里在选择在BODY里面查找。还有其他选项,比如HEADERS、COOKIES

Request URL:表示查找的URL的范围。

4. 点击OK生成脚本。

可以在该页面请求后使用 lr_output_message 打印该参数查看是否正确。

    web_reg_save_param_ex(
        "ParamName=TitleName",
        "LB=title>",
        "RB=</title",
        SEARCH_FILTERS,
        "Scope=Body",
        "RequestUrl=*/www.cnblogs.com/*",
        LAST);

    web_url("www.cnblogs.com",
        "URL=http://www.cnblogs.com/",
        "Resource=0",
        "RecContentType=text/html",
        "Referer=",
        "Snapshot=t17.inf",
        "Mode=HTML",
        LAST);

    lr_output_message("TitleName:%s",lr_eval_string("{TitleName}"));

5. 运行,查看Log

Action4.c(4): Registering web_reg_save_param_ex was successful      [MsgId: MMSG-26390]
Action4.c(13): Found resource "http://www.cnblogs.com/bundles/aggsite.css?
.......
Action4.c(13): web_url("www.cnblogs.com") was successful, 269803 body bytes, 18741 header bytes      [MsgId: MMSG-26386]
Action4.c(22): TitleName:博客园 - 开发者的网上家园

可以看到正确获取了我们想要的内容。

备注:

感想就是,手动关联一定要想着怎样去界定你要获取的内容,左边界右边界一定要对,然后尽可能的在Filters里面缩小范围就可以。

手动进行关联方法二:在Tree View里面自动建立关联

假设要获取的内容在 “www.cnblogs.com“的response body里面。

方法:

1. 切换到 Tree View视图。

选择 View –> Tree View即可。

2. 选中 Url: www.cnblogs.com

3. 点击HTTP View 查看该链接的 HTTP视图。

4. 点击Response Body查看该请求返回的响应结果。

5. 用鼠标选中要获取的内容,然后点击右键,选择Create Correlation,点击“是”。

6. 切换回脚本视图查看关联是否添加成功。

选择 View –> Script View即可。

//Correlation comment - Do not change!Original value=‘鍗氬鍥?- 寮€鍙戣€呯殑缃戜笂瀹跺洯‘ Name =‘CorrelationParameter_1‘

    web_reg_save_param_ex(
        "ParamName=CorrelationParameter_1",
        "LB=title>",
        "RB=</title",
        SEARCH_FILTERS,
        "Scope=Body",
        "RequestUrl=*/www.cnblogs.com/*",
        LAST);

备注

1. 转义字符

左右边界含有特殊字符时,需要用到转义字符“\”。

常见的特殊字符表示如下:

\b 退格
\f 换页
\n 换行
\r 回车
\t 水平制表
\v 垂直制表
\\ 反斜杠
\? 问号字符
\‘ 单引号字符
\" 双引号字符
\0 空字符

看下面的例子,我需要获取imgId的值:

关联脚本如下:

    web_reg_save_param_ex(
        "ParamName=image_id_value",
        "LB=imgId\":\"",
        "RB=\",",
        SEARCH_FILTERS,
        "Scope=Body",
        "RequestUrl=*/sendimagecode*",
        LAST);

2. 如何定位需要关联的地方

可以使用LoadRunner自带的工具 WinDiff来比较脚本的不同,进而找出需要进行关联的地方。

1) 录制两遍脚本,假设分别为 s1 和 s2

2) 使用WinDiff 工具找出两次脚本的不同,判断是否需要进行关联

打开s2,打开 tool –> compare with Script,选择s1。

两个脚本不同的地方 WinDiff 会进行标黄处理。

3)一般两个脚本不同的地方都需要进行关联处理。

lr_think_time表示等待时间,这个不同的话不用管。

4)找到产生该不同文字是在哪个request返回的response里面,我们在该resquest前面添加关联函数即可。

时间: 2024-10-13 15:05:38

LoadRunner录制:关联的相关文章

LoadRunner 录制IE 8卡死

LoadRunner 录制IE 8卡死 LoadRunner11录制脚本,对IE的版本是有所限制的,它只是支持IE 8 以下版本,其中包括IE 8,高出IE 8版本Loadrunner是不支持的. 我遇到LoadRunner录制脚本时IE8卡死,解决的方案: 首先查看一下在不录制脚本的情况下,手写一些代码,例如:输出一些字符: lr_out_message("aaaa") 看能否回放时在Replay log中有aaaa的出现,如果有的话,说明安装没有问题,这时就按着下面的步骤去检查.如

Loadrunner手动关联详解

Loadrunner手动关联详解 一.关联的含义: 关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,已变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这种动态获得服务器响应内容的方法被称作关联. 二.关联的过程: 以登陆场景为例,客户端发出获得登录页面的请求,服务器端得到该请求后,返回登录页面,同时动态生成一个Session Id,当用户输入用户名密码,请求登录时,该Sessi

LoadRunner录制HTTP脚本问题合集一

1 录制脚本问题 1.1 HTTP 脚本问题 1.11 LoadRunner录制脚本时为什么不弹出IE浏览器? 1.一台主机上安装多个浏览器时,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决. 启动浏览器,打开Internet选项对话框,切换到高级标签,去掉"启用第三方浏览器扩展(需要重启动)"的勾选,然后再次运行VuGen即可解决问题 提示:通常安装Firefox等浏览器后,都会勾选上面得选项,导致不能正常录制.因此建议运行LoadRunner得主机

LoadRunner录制图片验证码

LoadRunner录制图片验证码 LoadRunner自身是无法捕获到图片验证码的,但是我们可以帮助LoadRunner来实现验证码的捕获. 1.图片验证码 图片验证码的产生来自服务器端,由服务器生成随机数,然后写入到图片中.虽然LR可以录制下图片,但是无法从图片中获取数据,因此表面上看LR是无法跳过这关了,那么我们从服务器下手,通常产生的随机数是保存在session中,所以我们可以想办法获取到这个session.    a.针对应用,采用不同的语言,本次讲的是java应用,首先写个*.jsp

Loadrunner录制https脚本

Loadrunner录制https脚本 原创 2017-07-10 爱测未来 爱测未来 随着公司的发展,公司原有的SVN服务器存放的内容不断增加,容量已经不能满足后续需求,首先我们想到对服务器进行扩容,然而因为各种原因服务器不能进行扩容,所以公司决定更换新的SVN服务器,在做数据迁移和环境部署之前我们需要对服务器进行一次性能测试,了解部署后的服务器性能,测试过程中需要对https的网页进行性能测试. 我们可以用loadrunner录制http网页,但是当录制https网页的时候会发现证书错误不能

解决loadrunner录制页面的乱码问题

以下亲自验证了的:好用. 三步解决loadrunner录制页面的乱码问题 第一步:去lr 的vugen的Tools -> Recoding Options -> Advanced -> Support charset -> UTF-8 选上. 第二步:把IE的编码选择成UTF-8(我的默认就是,又选了一遍才好的,不然好不了). 第三步:在lr的测试结果页面里面,什么也不选中,点右键,选择简体中文(因为我的LR的测试页面此时中文变成了乱码). 对第三步进一步的解释:录制过程中,IE页

loadrunner录制上传文件,但是回放失败

用Loadrunner录制上传文件,脚本回放时发现,文件没有上传成功,检查脚本发现脚本中没有上传文件的路径. 脚本录制时选择的协议,如果说是socket协议,则不需要上传文件的路径,Loadrunner会把要上传的文件转义成一种特殊编码形式的文件,放在data.ws对应的buf中,运行脚本是直接上传buf中的内容如果是http/html协议,选择URL-based script,web_submit_data中会显示要上传文件的文件名,脚本中不会显示路径,默认路径在当前脚本保存的路径下,把上传的

Loadrunner 录制成功,但是脚本并没有产生

LR 在用IE 录制脚本已经成功,但是结束录制以后,并没有脚本产生,在产生脚本log 中提示: [Net An. Error    (14c8:1cec)] Request Connection: Remote Server @ 127.0.0.1:8010   (Service=)  NOT PROXIED! (REASON: Unable to connect to remote server: rc = -1 , le = 0) 解决方案: Record Option --> Networ

loadrunner录制成功但脚本内容为空,无任何代码//脚本中包含乱码

使用loadrunner录制脚本,录制过程中也会显示“正在录制…”,并且有(XX个事件).但是脚本录制结束之后,脚本中没有任何内容,没有代码显示. 解决方法: 在脚本录制程序VU generator中, 点“工具”——“录制选项”, 左边栏目中,“网络”——“端口映射”, 右边窗口中,在“捕获级别”的下拉列表中选择“套接字级别数据和WinINet级别数据”, 确定. 重新录制脚本,可查看到有对应于事件操作的代码记录. 使用loadrunner录制脚本,有时有个别网页页面会出现乱码的情况,在录制的

loadrunner录制时web时,安全证书问题

测试环境:win7+LoadRunner11+ie9 遇到的问题:用LoadRunner录制时,打开百度,总是报安全证书问题,如图所示 解决方法:Tools——Recording Options——port mapping中的capture level 设置为 winnet level data即可