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

求助:Rhino JS中动态获取不同UI选项下重发邮箱OTP的选择值

动态获取不同UI组中“向用户邮箱重发OTP”的选择值

问题背景

存在两组UI输入选项:

  • 选项1(含重发按钮)
    Index 0 - Enter otp password
    Index 1 - Cancel Option
    Index 2 - Resend OTP.
    Index 3 - Resend OTP to user email 
    
  • 选项2(无重发按钮)
    Index 0 - Enter otp password
    Index 1 - Cancel Option
    Index 2 - Resend OTP to user email.
    Index 3 - Regenerate OTP
    

需要动态获取“Resend OTP to user email”对应的用户选择值(yes/no),但无法预先知道用户使用的是哪一组UI。

解决方案

方案1:通过选项文本匹配目标元素(推荐)

直接遍历所有UI元素,匹配目标选项的文本内容,无需依赖固定索引,兼容性最强。

var targetOptionText = "Resend OTP to user email";
var selectedValue = null;

// 遍历callResponse中的所有UI元素
for (var i = 0; i < callResponse.size(); i++) {
    var currentElement = callResponse.get(i);
    // 注意:根据实际API调整获取选项文本的方法(此处假设为getText())
    if (currentElement.getText().trim() === targetOptionText.trim()) {
        selectedValue = currentElement.getSelectedIndexes()[0];
        break; // 找到目标后终止遍历
    }
}

// 后续处理selectedValue(比如判断yes/no)
if (selectedValue !== null) {
    // 执行业务逻辑
}

方案2:通过特征选项判断UI组类型

利用两组UI的差异特征(选项1存在“Resend OTP.”,选项2不存在),先判断所属组,再使用对应索引。

var selectedValue;
var isOption1 = false;

// 检查是否存在选项1的特征元素
for (var i = 0; i < callResponse.size(); i++) {
    if (callResponse.get(i).getText().trim() === "Resend OTP.") {
        isOption1 = true;
        break;
    }
}

// 根据UI组选择对应索引获取值
if (isOption1) {
    selectedValue = callResponse.get(3).getSelectedIndexes()[0];
} else {
    selectedValue = callResponse.get(2).getSelectedIndexes()[0];
}

方案3:容错式索引尝试(备选)

如果UI元素数量固定为4个,可以先尝试选项1的索引,失败后回退到选项2的索引。这种方法依赖UI结构稳定,不推荐作为首选。

var selectedValue;

try {
    // 优先尝试选项1的索引3
    selectedValue = callResponse.get(3).getSelectedIndexes()[0];
} catch (error) {
    // 索引3不存在时,尝试选项2的索引2
    selectedValue = callResponse.get(2).getSelectedIndexes()[0];
}

内容的提问来源于stack exchange,提问作者Karan Nayyar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:52:29