LoadRunner:登录或任意事务失败时终止事务并执行注销的实现示例问询
我完全懂你的需求——当LoadRunner脚本里的登录或者任意事务失败时,既要把对应事务标记为失败状态,还得触发注销逻辑对吧?结合你已经在用的文本检查方案,我给你写个清晰的示例代码,直接就能套用:
1. 封装通用的注销函数
首先把注销逻辑单独封装成一个函数,这样不管哪个事务失败,都能直接调用,避免重复写代码:
// 自定义注销函数,包含完整的注销流程 void perform_logout() { lr_output_message("检测到事务失败,开始执行注销操作..."); // 这里替换成你实际的注销请求,比如点击注销链接或者提交注销表单 web_url("Logout_Action", "URL=http://your-application-domain.com/user/logout", "Referer=http://your-application-domain.com/dashboard", LAST); // 可选:检查注销是否成功(根据你的系统提示调整文本) web_reg_find("Text=您已成功退出登录", "SaveCount=Logout_Success_Count", LAST); // 验证注销结果 if (atoi(lr_eval_string("{Logout_Success_Count}")) > 0) { lr_output_message("注销操作执行成功"); } else { lr_output_message("警告:注销操作可能未完成,请检查请求或文本检查规则"); } }
2. 登录事务的失败处理示例
针对登录场景,结合文本检查计数来判断失败,触发注销:
// 启动登录事务 lr_start_transaction("User_Login"); // 执行登录请求(替换成你实际的登录提交代码) web_submit_data("Login_Submit", "Action=http://your-application-domain.com/user/login", "Method=POST", "EncType=application/x-www-form-urlencoded", ITEMDATA, "Name=username", "Value={test_username}", ENDITEM, "Name=password", "Value={test_password}", ENDITEM, LAST); // 注册文本检查:捕获登录失败的提示(比如"用户名或密码错误") web_reg_find("Text=用户名或密码错误", "SaveCount=Login_Fail_Count", LAST); // 判断登录是否失败 if (atoi(lr_eval_string("{Login_Fail_Count}")) > 0) { // 标记登录事务为失败 lr_end_transaction("User_Login", LR_FAIL); lr_output_message("登录事务失败,触发注销"); // 调用注销函数 perform_logout(); } else { // 登录成功,标记事务为成功 lr_end_transaction("User_Login", LR_PASS); }
3. 其他业务事务的失败处理示例
对于任意其他事务,逻辑和登录完全一致,只需要替换事务名称、请求代码和失败检查文本:
// 启动提交订单事务 lr_start_transaction("Submit_Order"); // 执行提交订单请求(替换成你的实际业务请求) web_submit_data("Order_Submit", "Action=http://your-application-domain.com/order/submit", "Method=POST", ITEMDATA, "Name=order_details", "Value={order_info}", ENDITEM, LAST); // 注册文本检查:捕获订单提交失败的提示(比如"订单提交失败,请重试") web_reg_find("Text=订单提交失败,请重试", "SaveCount=Order_Fail_Count", LAST); // 判断事务是否失败 if (atoi(lr_eval_string("{Order_Fail_Count}")) > 0) { lr_end_transaction("Submit_Order", LR_FAIL); lr_output_message("提交订单事务失败,触发注销"); // 调用注销函数 perform_logout(); } else { lr_end_transaction("Submit_Order", LR_PASS); }
几个关键注意点
- 记住
web_reg_find是注册型函数,必须放在对应的请求之前,否则无法捕获请求返回的文本 - 如果你用的是图片检查或者其他验证方式,只需要把
if里的判断条件换成对应检查的计数或结果即可 - 确保注销函数里的请求和你手动操作的注销流程完全一致,比如需要携带会话Cookie的话,LoadRunner会自动处理,不用额外配置
内容的提问来源于stack exchange,提问作者Mitu
相关产品推荐
相关产品推荐

