以网页交易平台为例子,说明正则表达式提取器如何工作。
业务逻辑是这样子的:
login页面输入账号、密码登陆,服务器返回一个token。3秒内使用账号和token想服务器发请求,服务器开始通过websocket不断推送报价信息。通过网页下单,实际就是想服务器发一个请求,包含订单信息和账户信息,也是需要带上token标识身份。最后退出登录。 导入badboy录制的脚本(删减一些与业务逻辑关系不密切的请求)。 login的请求: 路径:/rest/%7B%22MT%22:%22Login%22,%22UserInfo%22:%7B%22login%22:7,%22password%22:%22TEST1%22%7D%7D 请求的内容就是通过编码后的路径发送到服务器的,通过网上的URL解码工具可以得到发送的内容就是: /rest/{"MT":"Login","UserInfo":{"login":7,"password":"TEST1"}} 这个请求发送过去之后,服务器会返回以下登陆信息,通过添加“监听器-查看结果树”可以在运行脚本之后查看相应数据。 login请求的相应数据: {"Tok":"05a9c08d77864b779435fea53780df7c","UserInfo":{"enable_change_password":1,"balance":1002898.62,"prevbalance":1002898.62,"enable_read_only":0,"name":"TEST1","enable":1,"login":7,"leverage":100,"group":"demoforex","credit":8888,"password":"TEST1","agent_account":0},"ConGroup":{"margin_type":0,"group":"demoforex","interestrate":0,"currency":"USD"},"ConCommon":{"timezone":8},"MT":"Login","MarginInfo":{"free_margin":1004089.81776393,"equity":1009823.05,"margin":5733.232236069749}} 这个就是服务器返回的token"05a9c08d77864b779435fea53780df7c",这次的工作就是要提取它,并存入变量供其他请求使用。 添加正则表达式提取器 对login右键,添加-后置处理器-正则表达式提取器 名称:要取有意义的名字,方便记忆 引用名称:这里的名称要作为变量的名称,在别的地方被引用 正则表达式:正则表达式中()括起来的部分就是要提取的。.代表任意字符,+代表出现任意次,后面加?。 模板:$1$代表只有一组数据 匹配数字:0代表随机取值,1代表全部取值,通常情况下填0,如果在LR中,取出的值是一个数组,还得处理一下,LR11版本用一个随机的函数就可以不用写大段的代码来处理数组 缺省值:如果参数没有取得到值,那默认给一个值让它取 替换 上面的步骤已经获取到token的值,接下来就是把所有出现token的地方用变量替换。${ }可以引用变量的值,如${Tok}。 录制获取的loggout的路径是: /rest/%7B%22MT%22:%22Logout%22,%22Desc%22:%22Logout%22,%22Tok%22:%2218502d780d624cfab77b402d6596fc21%22%7D, 用变量把地址中的tok的值替换后: /rest/%7B%22MT%22:%22Logout%22,%22Desc%22:%22Logout%22,%22Tok%22:%22${Tok}%22%7D 验证 替换后运行脚本,查看结果树的相应数据,可以看到原来固定不变的tok的值在每次运行后都会变化,并且等于login的相应数据中的tokde值,这样就代表正确。