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