feat 前面步骤中提取的参数,需要支持在后续步骤中引用

This commit is contained in:
2025-06-03 14:11:29 +08:00
parent eb58fd40c7
commit a790ffbcba
2 changed files with 41 additions and 15 deletions

View File

@@ -44,6 +44,9 @@ import org.springframework.util.CollectionUtils;
@Slf4j
public class UiSceneStepsServiceImpl implements IUiSceneStepsService {
// 添加静态Map用于存储提取的数据
private static final Map<String, Object> extractedDataMap = new HashMap<>();
@Resource
private UiSceneStepsMapper uiSceneStepsMapper;
@Resource
@@ -404,6 +407,8 @@ public class UiSceneStepsServiceImpl implements IUiSceneStepsService {
Map<String, Object> beforeData = CollectionUtils.isEmpty(beforeSettingList)
? new HashMap<>()
: filterBydataExtractionQOList(beforeSettingList, seleniumUtils);
// 保存前置数据到Map中
extractedDataMap.put("beforeData", beforeData);
//后置操作设置
List<UiHighSettingVO> afterSettingList = extractafterSetting(uiHighSettingVOList);
@@ -457,6 +462,8 @@ public class UiSceneStepsServiceImpl implements IUiSceneStepsService {
Map<String, Object> afterData = CollectionUtils.isEmpty(afterSettingList)
? new HashMap<>()
: filterBydataExtractionQOList(afterSettingList, seleniumUtils);
// 保存后置数据到Map中
extractedDataMap.put("afterData", afterData);
Map<String, Object> mergedData = new HashMap<>();
if (!beforeData.isEmpty()) {
mergedData.put("前置数据提取", beforeData);
@@ -1538,6 +1545,27 @@ public class UiSceneStepsServiceImpl implements IUiSceneStepsService {
seleniumUtils.clearInput(locator);
return;
}
// 检查输入值是否是变量引用格式 ${key}
if (inputValue.startsWith("${") && inputValue.endsWith("}")) {
// 从Map中获取前置和后置操作的数据集合
Map<String, Object> beforeData = (Map<String, Object>) extractedDataMap.get("beforeData");
Map<String, Object> afterData = (Map<String, Object>) extractedDataMap.get("afterData");
// 先从前置数据中查找,如果没有再从后置数据中查找
Object value = beforeData != null ? beforeData.get(inputValue) : null;
if (value == null && afterData != null) {
value = afterData.get(inputValue);
}
if (value != null) {
inputValue = value.toString();
log.info("变量 {} 被替换为: {}", inputValue, value);
} else {
log.warn("未找到变量 {} 的值,保持原样", inputValue);
}
}
// 执行输入操作
if (step.getOperate() == 1) { // 普通输入框
seleniumUtils.inputText(