diff --git a/test-test/src/main/java/com/test/test/service/impl/UiSceneStepsServiceImpl.java b/test-test/src/main/java/com/test/test/service/impl/UiSceneStepsServiceImpl.java index 4b14e40..957c511 100644 --- a/test-test/src/main/java/com/test/test/service/impl/UiSceneStepsServiceImpl.java +++ b/test-test/src/main/java/com/test/test/service/impl/UiSceneStepsServiceImpl.java @@ -44,6 +44,9 @@ import org.springframework.util.CollectionUtils; @Slf4j public class UiSceneStepsServiceImpl implements IUiSceneStepsService { + // 添加静态Map用于存储提取的数据 + private static final Map extractedDataMap = new HashMap<>(); + @Resource private UiSceneStepsMapper uiSceneStepsMapper; @Resource @@ -404,6 +407,8 @@ public class UiSceneStepsServiceImpl implements IUiSceneStepsService { Map beforeData = CollectionUtils.isEmpty(beforeSettingList) ? new HashMap<>() : filterBydataExtractionQOList(beforeSettingList, seleniumUtils); + // 保存前置数据到Map中 + extractedDataMap.put("beforeData", beforeData); //后置操作设置 List afterSettingList = extractafterSetting(uiHighSettingVOList); @@ -457,6 +462,8 @@ public class UiSceneStepsServiceImpl implements IUiSceneStepsService { Map afterData = CollectionUtils.isEmpty(afterSettingList) ? new HashMap<>() : filterBydataExtractionQOList(afterSettingList, seleniumUtils); + // 保存后置数据到Map中 + extractedDataMap.put("afterData", afterData); Map 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 beforeData = (Map) extractedDataMap.get("beforeData"); + Map afterData = (Map) 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( diff --git a/test-ui/src/views/test/uiTest/advancedSetting.vue b/test-ui/src/views/test/uiTest/advancedSetting.vue index 57c4b39..e91e39e 100644 --- a/test-ui/src/views/test/uiTest/advancedSetting.vue +++ b/test-ui/src/views/test/uiTest/advancedSetting.vue @@ -469,10 +469,10 @@
- @@ -586,7 +586,7 @@ - @@ -611,7 +611,7 @@ export default { data() { return { activeName: 'first', - uiHighSettingVOList: [], // + uiHighSettingVOList: [], // saveForm: { errorHandling: '1', // 错误处理 waitElementTime: 15000, // 等待元素超时时间 @@ -630,7 +630,6 @@ export default { pageSize: 10, name: null, }, - elementList: [], total: 0, editForm: { name: null, // 元素名称 @@ -641,7 +640,6 @@ export default { }, dialogTitle: '', dialogVisible: false, - groupList: [], // 分组 typeList: ['id', 'name', 'className', 'tagName', 'linkText', 'partialLinkText', 'css', 'xpath', 'lable', 'value', 'index'], rules: { name: [{ required: true, message: '请输入元素名称', trigger: 'blur' }], @@ -658,7 +656,7 @@ export default { this.getElementData() }, methods: { - // + // getGroupListData() { listGroup('element').then(res => { if (res.code === 200) { @@ -947,11 +945,11 @@ export default { // 获取元素列表 getElementListData(groupId, target) { if (!groupId) return; - + getElementList({ groupId: groupId }).then(res => { if (res.code === 200) { this.elementList = res.rows; - + // 检查当前选中的operateElementId是否在新的列表中存在 if (target && target.operateElementId) { const elementExists = this.elementList.some(item => item.id === target.operateElementId); @@ -1025,7 +1023,7 @@ export default { } else { this.activeName = 'second' } - + // 如果有已存在的设置,则加载它们 if (newVal.uiHighSettingVOList != null) { this.uiHighSettingVOList = newVal.uiHighSettingVOList @@ -1043,7 +1041,7 @@ export default { case '3': this.saveForm.errorHandling = item.errorHandling break - // 其他设置 + // 其他设置 case '4': if (item.otherSettingsQO != null) { this.saveForm.waitElementTime = item.otherSettingsQO.waitElementTime || 15000 @@ -1234,7 +1232,7 @@ export default { display: flex; flex-wrap: wrap; gap: 10px; - + .select { min-width: 200px; } @@ -1267,7 +1265,7 @@ export default { .information { margin-top: 20px; - + > div:first-child { font-weight: bold; margin-bottom: 10px;