对不起,如果这是一个重复的问题;我没有找到答案。(是的,我查过了,但我没有为 LR 11.04 使用 RTFM。我想保持我所剩无几的理智。)
我知道可以从 loadrunner 中调用 Perl,但还没有找到示例。我知道这是可能的,因为 Web_Reg_Save_Param_ex / Web_Reg-Save_Param_Regexp 函数中的 RegEx 逻辑被移植到 Perl 子例程中。
我需要知道如何做到这一点,因为我需要对我们测试的 (half-@$$ed) 应用程序做很多事情。
例子是:
.NET 应用程序 - 我可以快速轻松地找到参数值,在 LR 之外对它们进行切片和解析,然后将值返回到 LR。
标准 Web 应用程序 - 对某人的沙箱进行第三方调用。所有信息均采用 Base64 编码。我们需要获取明文(作为响应提供),然后编码为 Base 64,并将其发送到主系统。所以,AUT 是系统 A;系统 A 调用系统 B(302 响应),系统 B 响应,然后 AUT 将该数据发送回系统 A 以存储在其数据库中。(因为系统 A 和系统 B 来自同一供应商 - 嗯,我对我们的投标过程有疑问,但它是 OT。)
我有一个问题,我是一个优秀的程序员,但对 Perl 却是个菜鸟。所以我需要清理并重新编写,而不仅仅是坐下来编写代码。我检查了我能找到的 RegEx 信息(到目前为止最好的是在 loadrunner 中使用正则表达式),但到目前为止还不足以满足我的要求。
资源:
{"text":"A*","value":"271"}, // This is just the pattern - it's repeated 320 times or so
示例代码片段:
web_reg_save_param_ex(
"ParamName=Charity1",
"LB={\"text\":\"",
"RB/RE=\",\"value\":\"([0-9]+)\"},",
"Ordinal=All",
SEARCH_FILTERS,
"Scope=Body",
"IgnoreRedirections=Yes",
"RequestUrl=*/Person.aspx*",
LAST);
那个有效,返回名称(A*
来自上面的来源)。
web_reg_save_param_ex(
"ParamName=Charity1",
"LB/RE={\"text\":\"([A-Za-z0-9].+)\",\"value\":\"",
"RB=\"},",
"Ordinal=All",
SEARCH_FILTERS,
"Scope=Body",
"IgnoreRedirections=Yes",
"RequestUrl=*/Person.aspx*",
LAST);
这对我不起作用 - 找到的总记录为零。好的,其中一个条目有一个“-”,有些有空格 - 但 100% 失败?OTOH,如果我可以捕获整个列表,然后我会将其发送到 Perl,拆分子字符串,并返回两个修剪整齐的值,以保存为 LoadRunner 字符串(我认为 - LR 不太喜欢一个返回到目前为止的值。但我可以做一个 STRUCT 并将值返回给那个,我认为,或者一个指向内存空间的指针,让 LR 将引用的内存读取到一个 STRUCT,或者类似的东西。)
问题是,很明显 AUT 立即使用这两个值,所以我不能在以后使用它,当值被发回时 - 显然,数字比文本更重要。
任何建议都值得赞赏,但我想避免使用system()
- 这是我对 Base64 问题的解决方法(它应该是唯一的 Perl 调用,永远。)它工作得很好......直到我添加了一个M$
需要补丁,并且无法再在 LoadRunner 中打开和读取文件(惠普说,这是自定义代码,我们帮不了你。所以我删除了M$
补丁并运行了测试。它是大约 2010 年的 c++ Redistributable。那是2012 年末。作为参考,我们仍在这家商店运行 XP。我的办公桌上有一个 4 GB 的 Core i5... 与 Win7 一起发货。我们正在运行 Xtra Pathetic。这里的理智供不应求...... )
// * ** * ** 后期修订:
在我理顺了 RegEx 之后,修改 LoadRunner 调用(到 web_reg_save_param_regexp)起作用了。不清楚为什么“不引用”正则表达式没有A*
为第一个值返回 an,但我发现了为什么271
没有出现 - 实际上这很容易。最终值没有相同的边界条件。第一个值,显然“不引用”不包括当*
值中有“”时。???
web_reg_save_param_regexp(
"ParamName=Charity_REGEX",
"RegExp={\"text\":\"([^\"]{1,8})\",\"value\":\"",
"Ordinal=All",
SEARCH_FILTERS,
"Scope=Body",
"IgnoreRedirections=Yes",
"RequestUrl=*/Person.aspx*",
LAST);
web_reg_save_param_regexp(
"ParamName=Tenants_REGEX",
"RegExp=\",\"value\":\"([0-9]{1,3})\"}",
"Ordinal=All",
SEARCH_FILTERS,
"Scope=Body",
"IgnoreRedirections=Yes",
"RequestUrl=*/Person.aspx*",
LAST);