求助:如何用BeanShell代码实现随机抽取HTML选项值
修改BeanShell代码实现随机抽取
你的现有代码尝试用RandomUtils实现随机抽取,但如果实际运行是按顺序选取,可使用以下修正后的代码确保真正的随机抽取:
修正后的代码
import java.util.Random; import java.util.regex.Pattern; import java.util.regex.Matcher; import java.util.ArrayList; import java.util.List; // 获取响应数据 String responseData = prev.getResponseDataAsString(); // 匹配<option>标签,提取value属性值 Pattern pattern = Pattern.compile("<option value=\"(.+?)\">(.+?)</option>"); Matcher matcher = pattern.matcher(responseData); // 存储提取到的城市值 List<String> cities = new ArrayList<>(); while(matcher.find()) { String cityValue = matcher.group(1); log.info("提取到城市值: " + cityValue); cities.add(cityValue); } // 随机抽取一个城市(增加非空判断避免异常) if (!cities.isEmpty()) { Random random = new Random(); String randomCity = cities.get(random.nextInt(cities.size())); vars.put("Depart_city", randomCity); log.info("随机选中的城市: " + randomCity); } else { log.error("未提取到任何城市值"); }
关键调整说明
- 给
List指定泛型String,避免潜在的类型转换问题 - 使用JDK原生的
java.util.Random实现随机逻辑,稳定性更可控 - 增加列表非空判断,防止因未提取到数据导致空指针异常
- 简化日志输出,让调试信息更清晰直观
内容的提问来源于stack exchange,提问作者Rakesh
相关产品推荐
相关产品推荐

