You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 19:42:41