关联函数是一个查找函数,即是从HTML文件内容中查找需要的值,并将其保存在一个变量或数组中。换一个角度看,关联函数不单单可以匹配一些变化的值,同样可以匹配一些固定的内容,并将其保存到一个数据组,供后续业务使用,也即对关联函数进行扩展使用,在处理事务中这种方式经常用到。

  实例:以订票为例,假设要实现这样的事务,选择好出发城市和到达城市后,在选择航班时,需要选择票价最便宜的航班

  实现思路:首先使用关联函数读取HTML代码中票价和航班号,分别将两部分的数据保存在不同的数组中;接着比较票价,选择找到票价最低的是数组中的第几个元素,即最便宜机票所在数据的下标;最后将该下标的值对应地读出航班号,就是最便宜的航班。

  完整代码如下:

【注:还没运行成功,主要是不懂代码函数的运用】

Action()
{
//录制订票脚本,为了练习关联技术的经典使用web_url("WebTours","URL=http://127.0.0.1:1080/WebTours","Resource=0","RecContentType=text/html","Referer=","Snapshot=t2.inf","Mode=HTTP",LAST);web_url("header.html","URL=http://127.0.0.1:1080/WebTours/header.html","Resource=0","RecContentType=text/html","Referer=http://127.0.0.1:1080/WebTours/","Snapshot=t4.inf","Mode=HTTP",LAST);web_concurrent_start(NULL);web_url("hp_logo.png","URL=http://127.0.0.1:1080/WebTours/images/hp_logo.png","Resource=1","RecContentType=image/png","Referer=http://127.0.0.1:1080/WebTours/header.html","Snapshot=t5.inf",LAST);web_url("webtours.png","URL=http://127.0.0.1:1080/WebTours/images/webtours.png","Resource=0","RecContentType=text/html","Referer=http://127.0.0.1:1080/WebTours/header.html","Mode=HTTP",LAST);web_concurrent_end(NULL);web_url("welcome.pl","URL=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=true","Resource=0","RecContentType=text/html","Referer=http://127.0.0.1:1080/WebTours/","Snapshot=t6.inf","Mode=HTTP",LAST);web_concurrent_start(NULL);web_url("nav.pl","URL=http://127.0.0.1:1080/WebTours/nav.pl?in=home","Resource=0","RecContentType=text/html","Referer=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=true","Snapshot=t7.inf","Mode=HTTP",LAST);web_url("home.html","URL=http://127.0.0.1:1080/WebTours/home.html","Resource=0","RecContentType=text/html","Referer=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=true","Snapshot=t8.inf","Mode=HTTP",LAST);web_concurrent_end(NULL);web_url("mer_login.gif","URL=http://127.0.0.1:1080/WebTours/images/mer_login.gif","Resource=1","RecContentType=image/gif","Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home","Snapshot=t9.inf",LAST);web_concurrent_start(NULL);web_url("8afc2fe48db9060fe1bdda2089e1d950.png","URL=http://act.cmcmcdn.com/upload/201507/8afc2fe48db9060fe1bdda2089e1d950.png","Resource=1","RecContentType=image/png","Referer=http://127.0.0.1:1080/WebTours/","Snapshot=t10.inf",LAST);web_url("3b491068507d8f85ea7b35d756da7215.png","URL=http://act.cmcmcdn.com/upload/201507/3b491068507d8f85ea7b35d756da7215.png","Resource=1","RecContentType=image/png","Referer=http://127.0.0.1:1080/WebTours/","Snapshot=t11.inf",LAST);web_concurrent_end(NULL);lr_start_transaction("登录");lr_think_time(31);web_submit_data("login.pl","Action=http://127.0.0.1:1080/WebTours/login.pl","Method=POST","RecContentType=text/html","Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home","Snapshot=t12.inf","Mode=HTTP",ITEMDATA,"Name=userSession", "Value=120844.899311462zcVfQfQpfAiDDDDDDHcQfpHfHAf", ENDITEM,"Name=username", "Value=test1", ENDITEM,"Name=password", "Value=test1", ENDITEM,"Name=JSFormSubmit", "Value=off", ENDITEM,"Name=login.x", "Value=36", ENDITEM,"Name=login.y", "Value=15", ENDITEM,LAST);web_concurrent_start(NULL);web_url("nav.pl_2","URL=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home","Resource=0","RecContentType=text/html","Referer=http://127.0.0.1:1080/WebTours/login.pl","Snapshot=t13.inf","Mode=HTTP",LAST);web_url("login.pl_2","URL=http://127.0.0.1:1080/WebTours/login.pl?intro=true","Resource=0","RecContentType=text/html","Referer=http://127.0.0.1:1080/WebTours/login.pl","Snapshot=t18.inf","Mode=HTTP",LAST);web_concurrent_end(NULL);web_concurrent_start(NULL);web_url("flights.gif","URL=http://127.0.0.1:1080/WebTours/images/flights.gif","Resource=1","RecContentType=image/gif","Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home","Snapshot=t14.inf",LAST);web_url("in_home.gif","URL=http://127.0.0.1:1080/WebTours/images/in_home.gif","Resource=1","RecContentType=image/gif","Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home","Snapshot=t15.inf",LAST);web_url("signoff.gif","URL=http://127.0.0.1:1080/WebTours/images/signoff.gif","Resource=1","RecContentType=image/gif","Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home","Snapshot=t16.inf",LAST);web_url("itinerary.gif","URL=http://127.0.0.1:1080/WebTours/images/itinerary.gif","Resource=1","RecContentType=image/gif","Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home","Snapshot=t17.inf",LAST);web_concurrent_end(NULL);lr_end_transaction("登录", LR_AUTO);lr_start_transaction("订票");lr_think_time(11);web_url("Search Flights Button","URL=http://127.0.0.1:1080/WebTours/welcome.pl?page=search","Resource=0","RecContentType=text/html","Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home","Snapshot=t19.inf","Mode=HTTP",LAST);web_concurrent_start(NULL);web_url("reservations.pl","URL=http://127.0.0.1:1080/WebTours/reservations.pl?page=welcome","Resource=0","RecContentType=text/html","Referer=http://127.0.0.1:1080/WebTours/welcome.pl?page=search","Snapshot=t20.inf","Mode=HTTP",LAST);web_url("nav.pl_3","URL=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=flights","Resource=0","RecContentType=text/html","Referer=http://127.0.0.1:1080/WebTours/welcome.pl?page=search","Snapshot=t21.inf","Mode=HTTP",LAST);web_concurrent_end(NULL);web_url("button_next.gif","URL=http://127.0.0.1:1080/WebTours/images/button_next.gif","Resource=1","RecContentType=image/gif","Referer=http://127.0.0.1:1080/WebTours/reservations.pl?page=welcome","Snapshot=t22.inf",LAST);web_concurrent_start(NULL);web_url("in_flights.gif","URL=http://127.0.0.1:1080/WebTours/images/in_flights.gif","Resource=1","RecContentType=image/gif","Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=flights","Snapshot=t23.inf",LAST);web_url("home.gif","URL=http://127.0.0.1:1080/WebTours/images/home.gif","Resource=1","RecContentType=image/gif","Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=flights","Snapshot=t24.inf",LAST);web_concurrent_end(NULL);lr_think_time(5);
/*分析票价和航班号的左右边界值后(可通过航班信息的HTML源代码分析),在这里插入关联函数,进行关联时Ordinal的属性必须设置为all,这样才可以将所有的值匹配到,并将其保存在一个数组中。*///这是航班的关联函数
    web_reg_save_param_ex("ParamName=fligthno","LB=outboundFlight value=","RB=;","Ordinal=all",SEARCH_FILTERS,LAST);//这是票价的关联函数
    web_reg_save_param_ex("ParamName=fligthcost","LB=center>$","RB=</TD>","Ordinal=all",SEARCH_FILTERS,LAST);
/*设置一个标记flag来保存票价*///初始化最贵机票,将第一个航班的机票设置为初始化的最贵的机票max = atoi(lr_eval_string ("{wcsparam_text1_1}"));//初始化标识位,默认设置为1flagno=1;//for循环所有机票for (i=2;i<=atoi(lr_eval_string ("{wcsparam_text1_count}"));i++) {sprintf(cost,"{wcsparam_text1_%d}",i);//比较最前航班的机票是否大于max的值,如果大于max的值,即重新对max赋值if(atoi(lr_eval_string (cost))>max){max=atoi(lr_eval_string (cost));flagno=i;}}/*找到最便宜的机票后,可以得到该数组的下标,那这个数组的下标所对应的航班就是票价最便宜的航班,获取航班号的代码如下:*///通过标识位来确定航班
    sprintf(flightelem,"{wcsparam_text2_%d}",flagno);lr_save_string (lr_eval_string (flightelem),"fligthno");web_submit_data("reservations.pl_2","Action=http://127.0.0.1:1080/WebTours/reservations.pl","Method=POST","RecContentType=text/html","Referer=http://127.0.0.1:1080/WebTours/reservations.pl?page=welcome","Snapshot=t25.inf","Mode=HTTP",ITEMDATA,"Name=advanceDiscount", "Value=0", ENDITEM,"Name=depart", "Value=Denver", ENDITEM,"Name=departDate", "Value=04/11/2017", ENDITEM,"Name=arrive", "Value=London", ENDITEM,"Name=returnDate", "Value=04/12/2017", ENDITEM,"Name=numPassengers", "Value=1", ENDITEM,"Name=seatPref", "Value=Window", ENDITEM,"Name=seatType", "Value=First", ENDITEM,"Name=.cgifields", "Value=roundtrip", ENDITEM,"Name=.cgifields", "Value=seatType", ENDITEM,"Name=.cgifields", "Value=seatPref", ENDITEM,"Name=findFlights.x", "Value=48", ENDITEM,"Name=findFlights.y", "Value=10", ENDITEM,LAST);lr_think_time(4);/*获得最便宜的票价和航班后,即将这两部分的信息放入到提交的信息中,作为客户端的请求进行提交即可,具体代码如下*/web_submit_data("reservations.pl_3","Action=http://127.0.0.1:1080/WebTours/reservations.pl","Method=POST","RecContentType=text/html","Referer=http://127.0.0.1:1080/WebTours/reservations.pl","Snapshot=t26.inf","Mode=HTTP",ITEMDATA,//"Name=outboundFlight", "Value=023;519;04/11/2017", ENDITEM,"Name=outboundFlight", "Value={flightno};{flightnocost};04/11/2017", ENDITEM,"Name=numPassengers", "Value=1", ENDITEM,"Name=advanceDiscount", "Value=0", ENDITEM,"Name=seatType", "Value=First", ENDITEM,"Name=seatPref", "Value=Window", ENDITEM,"Name=reserveFlights.x", "Value=43", ENDITEM,"Name=reserveFlights.y", "Value=6", ENDITEM,LAST);web_submit_data("reservations.pl_4","Action=http://127.0.0.1:1080/WebTours/reservations.pl","Method=POST","RecContentType=text/html","Referer=http://127.0.0.1:1080/WebTours/reservations.pl","Snapshot=t27.inf","Mode=HTTP",ITEMDATA,"Name=firstName", "Value=test1", ENDITEM,"Name=lastName", "Value=test1", ENDITEM,"Name=address1", "Value=", ENDITEM,"Name=address2", "Value=", ENDITEM,"Name=pass1", "Value=test1 test1", ENDITEM,"Name=creditCard", "Value=", ENDITEM,"Name=expDate", "Value=", ENDITEM,"Name=oldCCOption", "Value=", ENDITEM,"Name=numPassengers", "Value=1", ENDITEM,"Name=seatType", "Value=First", ENDITEM,"Name=seatPref", "Value=Window", ENDITEM,//"Name=outboundFlight", "Value=023;519;04/11/2017", ENDITEM,"Name=outboundFlight", "Value={flightno};{flightnocost};04/11/2017", ENDITEM,"Name=advanceDiscount", "Value=0", ENDITEM,"Name=returnFlight", "Value=", ENDITEM,"Name=JSFormSubmit", "Value=off", ENDITEM,"Name=.cgifields", "Value=saveCC", ENDITEM,"Name=buyFlights.x", "Value=48", ENDITEM,"Name=buyFlights.y", "Value=6", ENDITEM,LAST);web_url("bookanother.gif","URL=http://127.0.0.1:1080/WebTours/images/bookanother.gif","Resource=1","RecContentType=image/gif","Referer=http://127.0.0.1:1080/WebTours/reservations.pl","Snapshot=t28.inf",LAST);lr_end_transaction("订票", LR_AUTO);return 0;
}

附上航班信息源码:

<!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
<head>
<title>Flight Selections</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body bgcolor="#E0E7F1">
<style>blockquote {font-family: tahoma; font-size : 10pt}H1 {font-family: tahoma; font-size : 22pt; color: #993333}small {font-family: tahoma; font-size : 8pt}H3 {font-family: tahoma; font-size : 10pt; color: black}TD {font-family: tahoma; font-size : 10pt; color: black}</style><BR><BR><h1><font color=#003366>&nbsp;&nbsp;<b>Find Flight</font></b></h1><blockquote>
<form method="post" action="reservations.pl" enctype="application/x-www-form-urlencoded"><center>
<!-- From Denver (0) To London (2) -->
<table cellspacing=2 border=0 width=50%>
<blockquote>Flight departing from <B>Denver</B> to <B>London</B> on <B>04/11/2017</B><BR><BR><tr bgcolor=#5E7884><td align=center><font color=white><B>Flight</B></font><td align=center><font color=white><B>Departure time</B><td align=center><font color=white><B>Cost</B>
//从下面可以看出航班(020、021...)的      左边界是 outboundFlight value=               右边界是  ;
//              票价($ 635、$ 565...)的  左边界是 center>$                            右边界是  </TD>
<tr bgcolor=#EFF2F7><td align=center><input type = radio name=outboundFlight value=020;635;04/11/2017 checked >Blue Sky Air 020<td align=center>8am<td align=center>$ 635</TD>
</TR>
<tr bgcolor=#EFF2F7><td align=center><input type = radio name=outboundFlight value=021;565;04/11/2017>Blue Sky Air 021<td align=center>1pm<td align=center>$ 565</TD>
</TR>
<tr bgcolor=#EFF2F7><td align=center><input type = radio name=outboundFlight value=022;600;04/11/2017>Blue Sky Air 022<td align=center>5pm<td align=center>$ 600</TD>
</TR>
<tr bgcolor=#EFF2F7><td align=center><input type = radio name=outboundFlight value=023;519;04/11/2017>Blue Sky Air 023<td align=center>11pm<td align=center>$ 519</TD>
</TR>
</table><input type="hidden" name="numPassengers" value="1"  /><input type="hidden" name="advanceDiscount" value="0"  /><input type="hidden" name="seatType" value="First"  /><input type="hidden" name="seatPref" value="Window"  />
<P><center><table width=80% cellspacing=1><tr><td align=center>
<input type="image" name="reserveFlights" src="/WebTours/images/button_next.gif" border="0" />
<td>&nbsp;<td align=center></table></center></form></center>
</blockquote></body>
</html>

航班信息

转载于:https://www.cnblogs.com/Chilam007/p/6670998.html

loadrunner提高篇 - 关联技术的经典使用相关推荐

  1. loadrunner提高篇 - 结果分析实践

    分析图合并 一.分析图合并原理 选择view->merge graphs,弹出如图1所示对话框 图1(设置合并图) 1.选择要合并的图.选择一个要与当前活动图合并的图,注意这里只能选择X轴度量单 ...

  2. [网络安全提高篇] 一一九.恶意软件动态分析经典沙箱Cape的安装和基础用法详解

    终于忙完初稿,开心地写一篇博客. "网络安全提高班"新的100篇文章即将开启,包括Web渗透.内网渗透.靶场搭建.CVE复现.攻击溯源.实战及CTF总结,它将更加聚焦,更加深入,也 ...

  3. [网络安全提高篇] 一〇二.Metasploit技术之基础用法万字详解及防御机理

    当您阅读到该篇文章时,作者已经将"网络安全自学篇"设置成了收费专栏,首先说声抱歉.感谢这一年来大家的阅读和陪伴,这100篇安全文章记录了自己从菜鸡到菜鸟的成长史,该部分知识也花了很 ...

  4. [网络安全提高篇] 一〇三.Metasploit后渗透技术之信息收集、权限提权和功能模块

    当您阅读到该篇文章时,作者已经将"网络安全自学篇"设置成了收费专栏,首先说声抱歉.感谢这一年来大家的阅读和陪伴,这100篇安全文章记录了自己从菜鸡到菜鸟的成长史,该部分知识也花了很 ...

  5. java迭代器cas,java提高篇(三十)-Iterator - Java 技术驿站-Java 技术驿站

    迭代对于我们搞Java的来说绝对不陌生.我们常常使用JDK提供的迭代接口进行Java集合的迭代. Iterator iterator = list.iterator(); while(iterator ...

  6. LoadRunner脚本篇

    LoadRunner脚本篇 1概述 2脚本录制 3脚本编写 4脚本调试 关  键  词:LoadRunner 性能测试脚本 摘      要:编写一个准确无误的脚本对性能测试有至关重要的意义.本文介绍 ...

  7. 【转】java提高篇(二)-----理解java的三大特性之继承

    [转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in ja ...

  8. Java提高篇 —— Java三大特性之继承

    一.前言 在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事 ...

  9. 全民一起玩python课件_全民一起玩Python课基础+提高篇[免费学习]

    全民一玩Python系列由杨洋博士精心制作,面向所有希望学习Python编程.进而能够在学习和工作中编写办公自动化.网页信息提取.数据分析处理.人工智能应用.娱乐游戏应用等实用程序的各行业人士. 制作 ...

最新文章

  1. NDKJNI Android 相关资料整理(四)
  2. 互联网公司面试官是如何360°无死角考察候选人的?(下篇)
  3. MIP技术进展月报第2期: 数据绑定,异步脚本加速
  4. 机器学习速成课程 | 练习 | Google Development——编程练习:验证
  5. 决策树分类算法matlab,matlab实现的C45分类决策树算法
  6. SpringBoot配置RunDashboard
  7. 《空间谱估计理论与算法》学习笔记005-信号源数估计
  8. Ubuntu 关闭 onboard (屏幕键盘应用)开机自启
  9. iphone手势识别(双击、捏、旋转、拖动、划动、长按)UITapGestureRecognizer
  10. vue drag函数拖拽效果实现
  11. 微软project服务器搭建,Project Server 2013 安装和部署概述
  12. 【2020年高被引学者】 王威廉 加州大学圣塔芭芭拉分校
  13. 数据库------MYSQL
  14. 【参赛作品78】参加openGauss课程21天学习有感
  15. 令人受益的21个故事
  16. 暂停后重开笔记本电脑音量突然变大
  17. 指甲上长 黑线  ,出问题的可能是: 肾/肝/肠胃/皮肤。需要去医院,看皮肤科和 消化科。
  18. 字符串存储的可修改性
  19. 【项目管理】项目沟通管理
  20. 火猴之图片立体翻转效果展示(firemonkey)

热门文章

  1. 第二章节 ASP.NET 验证控件(一)
  2. JAVA集合四:比较器--类自定义排序
  3. Educational Codeforces Round 54 (Rated for Div. 2): D. Edge Deletion(最短路树)
  4. VK Cup 2018 Round 2: B. Three-level Laser(二分)
  5. bzoj 1019: [SHOI2008]汉诺塔(打表)
  6. bzoj 1625: [Usaco2007 Dec]宝石手镯(01背包)
  7. opencv 霍夫变换检测直线和圆
  8. java图片亮度调整
  9. jquery中的class函数addClass,removeClass,toggle,hasClass
  10. jQuery form插件使用详解