fix 数据提取第二步提取的参数,在第五步里用不了

This commit is contained in:
2025-06-13 16:28:42 +08:00
parent e0910ea033
commit c9e2aa7c57

View File

@@ -376,6 +376,7 @@ public class UiSceneStepsServiceImpl implements IUiSceneStepsService {
private boolean executeStepWithLog(UiSceneSteps step, SeleniumUtils seleniumUtils, private boolean executeStepWithLog(UiSceneSteps step, SeleniumUtils seleniumUtils,
Long sceneStepsReportId, StepExecution stepExecution, Long sceneStepsReportId, StepExecution stepExecution,
List<UiHighSettingVO> uiHighSettingVOList) { List<UiHighSettingVO> uiHighSettingVOList) {
log.info("开始执行步骤:{}",step.getName());
// 1. 初始化设置对象 // 1. 初始化设置对象
UiHighSettingVO errorSetting = extractErrorSetting(uiHighSettingVOList); UiHighSettingVO errorSetting = extractErrorSetting(uiHighSettingVOList);
UiHighSettingVO otherSetting = extractOtherSetting(uiHighSettingVOList); UiHighSettingVO otherSetting = extractOtherSetting(uiHighSettingVOList);
@@ -393,15 +394,14 @@ public class UiSceneStepsServiceImpl implements IUiSceneStepsService {
} }
} }
//前置操作设置 //前置操作设置
List<UiHighSettingVO> beforeSettingList = extractbeforeSetting(uiHighSettingVOList); List<UiHighSettingVO> beforeSettingList = extractbeforeSetting(uiHighSettingVOList);
// 获取前置操作数据集合(判空) // 获取前置操作数据集合(判空)
Map<String, Object> beforeData = CollectionUtils.isEmpty(beforeSettingList) Map<String, Object> beforeData = CollectionUtils.isEmpty(beforeSettingList)
? new HashMap<>() ? new HashMap<>()
: filterBydataExtractionQOList(beforeSettingList, seleniumUtils); : filterBydataExtractionQOList(beforeSettingList, seleniumUtils);
// 保存前置数据到Map中 // 保存前置数据到Map中使用步骤ID作为key的一部分
extractedDataMap.put("beforeData", beforeData); extractedDataMap.put("beforeData_" + step.getId(), beforeData);
//后置操作设置 //后置操作设置
List<UiHighSettingVO> afterSettingList = extractafterSetting(uiHighSettingVOList); List<UiHighSettingVO> afterSettingList = extractafterSetting(uiHighSettingVOList);
@@ -456,8 +456,10 @@ public class UiSceneStepsServiceImpl implements IUiSceneStepsService {
Map<String, Object> afterData = CollectionUtils.isEmpty(afterSettingList) Map<String, Object> afterData = CollectionUtils.isEmpty(afterSettingList)
? new HashMap<>() ? new HashMap<>()
: filterBydataExtractionQOList(afterSettingList, seleniumUtils); : filterBydataExtractionQOList(afterSettingList, seleniumUtils);
// 保存后置数据到Map中 // 保存后置数据到Map中使用步骤ID作为key的一部分
extractedDataMap.put("afterData", afterData); extractedDataMap.put("afterData_" + step.getId(), afterData);
// 合并当前步骤的前置和后置数据
Map<String, Object> mergedData = new HashMap<>(); Map<String, Object> mergedData = new HashMap<>();
if (!beforeData.isEmpty()) { if (!beforeData.isEmpty()) {
mergedData.put("前置数据提取", beforeData); mergedData.put("前置数据提取", beforeData);
@@ -1542,16 +1544,20 @@ public class UiSceneStepsServiceImpl implements IUiSceneStepsService {
// 检查输入值是否是变量引用格式 ${key} // 检查输入值是否是变量引用格式 ${key}
if (inputValue.startsWith("${") && inputValue.endsWith("}")) { if (inputValue.startsWith("${") && inputValue.endsWith("}")) {
// 从Map中获取前置和后置操作的数据集合 Object value = null;
Map<String, Object> beforeData = (Map<String, Object>) extractedDataMap.get("beforeData");
Map<String, Object> afterData = (Map<String, Object>) extractedDataMap.get("afterData"); // 遍历所有步骤的数据,从最新的开始查找
for (Map.Entry<String, Object> entry : extractedDataMap.entrySet()) {
// 先从前置数据中查找,如果没有再从后置数据中查找 if (entry.getValue() instanceof Map) {
Object value = beforeData != null ? beforeData.get(inputValue) : null; Map<String, Object> dataMap = (Map<String, Object>) entry.getValue();
if (value == null && afterData != null) { // 检查是否包含完整的 ${key} 格式
value = afterData.get(inputValue); if (dataMap.containsKey(inputValue)) {
value = dataMap.get(inputValue);
break;
}
}
} }
if (value != null) { if (value != null) {
inputValue = value.toString(); inputValue = value.toString();
log.info("变量 {} 被替换为: {}", inputValue, value); log.info("变量 {} 被替换为: {}", inputValue, value);
@@ -1594,4 +1600,4 @@ public class UiSceneStepsServiceImpl implements IUiSceneStepsService {
} }
} }