From a790ffbcbaadfeea80cc0a42a6b899f68996b34c Mon Sep 17 00:00:00 2001 From: guocan Date: Tue, 3 Jun 2025 14:11:29 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E5=89=8D=E9=9D=A2=E6=AD=A5=E9=AA=A4?= =?UTF-8?q?=E4=B8=AD=E6=8F=90=E5=8F=96=E7=9A=84=E5=8F=82=E6=95=B0=EF=BC=8C?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E6=94=AF=E6=8C=81=E5=9C=A8=E5=90=8E=E7=BB=AD?= =?UTF-8?q?=E6=AD=A5=E9=AA=A4=E4=B8=AD=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/UiSceneStepsServiceImpl.java | 28 +++++++++++++++++++ .../src/views/test/uiTest/advancedSetting.vue | 28 +++++++++---------- 2 files changed, 41 insertions(+), 15 deletions(-) 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;