ui自动化编辑回到列表不刷新列表
This commit is contained in:
@@ -223,11 +223,23 @@ export const constantRoutes = [
|
|||||||
path: '',
|
path: '',
|
||||||
component: () => import('@/views/test/uiTest/editScene'),
|
component: () => import('@/views/test/uiTest/editScene'),
|
||||||
name: 'EditScene',
|
name: 'EditScene',
|
||||||
noCache: true,
|
|
||||||
meta: { title: '编辑场景', activeMenu: '/ui-test' }
|
meta: { title: '编辑场景', activeMenu: '/ui-test' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/ui-test/automation-test',
|
||||||
|
component: Layout,
|
||||||
|
hidden: true,
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: '',
|
||||||
|
component: () => import('@/views/test/uiTest/automationTest'),
|
||||||
|
name: 'AutomationTestView',
|
||||||
|
meta: { title: 'UI自动化测试', activeMenu: '/ui-test' }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: '/testplan/overview',
|
path: '/testplan/overview',
|
||||||
component: Layout,
|
component: Layout,
|
||||||
|
|||||||
@@ -79,7 +79,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 数据提取 -->
|
<!-- 数据提取 -->
|
||||||
<div v-if="item.operateType === '3'">
|
<div v-if="item.operateType === '3'">
|
||||||
<el-collapse v-model="index" accordion>
|
<el-collapse v-model="item.activeCollapse" accordion>
|
||||||
<el-collapse-item name="1">
|
<el-collapse-item name="1">
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
<div class="time">
|
<div class="time">
|
||||||
@@ -234,7 +234,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 数据提取 -->
|
<!-- 数据提取 -->
|
||||||
<div v-if="item.operateType === '3'">
|
<div v-if="item.operateType === '3'">
|
||||||
<el-collapse v-model="index" accordion>
|
<el-collapse v-model="item.activeCollapse" accordion>
|
||||||
<el-collapse-item name="1">
|
<el-collapse-item name="1">
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
<div class="time">
|
<div class="time">
|
||||||
@@ -365,7 +365,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 断言 -->
|
<!-- 断言 -->
|
||||||
<div v-if="item.operateType === '2'">
|
<div v-if="item.operateType === '2'">
|
||||||
<el-collapse v-model="index" accordion>
|
<el-collapse v-model="item.activeCollapse" accordion>
|
||||||
<el-collapse-item name="1">
|
<el-collapse-item name="1">
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
<div class="time">
|
<div class="time">
|
||||||
@@ -399,7 +399,7 @@
|
|||||||
<el-option key="1" label="是" value="1"></el-option>
|
<el-option key="1" label="是" value="1"></el-option>
|
||||||
<el-option key="2" label="否" value="2"></el-option>
|
<el-option key="2" label="否" value="2"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-input v-model="content.expectations" placeholder="请输入期望弹窗文本"></el-input>
|
<el-input v-model="content.expectations" placeholder="请输入期望弹窗文本" style="width: 300px;"></el-input>
|
||||||
</div>
|
</div>
|
||||||
<div class="time-right">
|
<div class="time-right">
|
||||||
<el-switch v-model="content.isDisabled" :active-value="1" :inactive-value="0"></el-switch>
|
<el-switch v-model="content.isDisabled" :active-value="1" :inactive-value="0"></el-switch>
|
||||||
@@ -410,47 +410,51 @@
|
|||||||
<!-- 元素断言 -->
|
<!-- 元素断言 -->
|
||||||
<div v-if="item.assertionQOList && item.assertionQOList.elementAssertions && item.assertionQOList.elementAssertions.length > 0" class="information">
|
<div v-if="item.assertionQOList && item.assertionQOList.elementAssertions && item.assertionQOList.elementAssertions.length > 0" class="information">
|
||||||
<div>元素断言</div>
|
<div>元素断言</div>
|
||||||
<div v-for="(content, index2) in item.assertionQOList.elementAssertions" class="time">
|
<div v-for="(content, index2) in item.assertionQOList.elementAssertions" class="assertion-block">
|
||||||
<div class="time-left">
|
<!-- 元素选择部分 -->
|
||||||
<div class="operateObject-wrap">
|
<div class="time">
|
||||||
<el-select v-model="content.operateObject" class="select" @change="() => handleOperateObjectChange(content)">
|
<div class="time-left">
|
||||||
<el-option key="1" label="元素对象" value="1"></el-option>
|
<div class="operateObject-wrap">
|
||||||
<el-option key="2" label="元素定位" value="2"></el-option>
|
<el-select v-model="content.operateObject" class="select" @change="() => handleOperateObjectChange(content)">
|
||||||
</el-select>
|
<el-option key="1" label="元素对象" value="1"></el-option>
|
||||||
<!-- 元素对象 -->
|
<el-option key="2" label="元素定位" value="2"></el-option>
|
||||||
<div v-show="content.operateObject === '1'" class="operateObject-wrap">
|
|
||||||
<el-select v-model="content.operateGroupId" class="select" @change="handleElementAssertionGroupChange(content)" placeholder="请选择元素组">
|
|
||||||
<el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select v-model="content.operateElementId" class="select" placeholder="请选择元素">
|
<!-- 元素对象 -->
|
||||||
<el-option v-for="item in elementList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
<div v-show="content.operateObject === '1'" class="operateObject-wrap">
|
||||||
</el-select>
|
<el-select v-model="content.operateGroupId" class="select" @change="handleElementAssertionGroupChange(content)" placeholder="请选择元素组">
|
||||||
</div>
|
<el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
<!-- 元素定位 -->
|
</el-select>
|
||||||
<div v-show="content.operateObject === '2'" class="operateObject-wrap">
|
<el-select v-model="content.operateElementId" class="select" placeholder="请选择元素">
|
||||||
<el-select v-model="content.operateLocType" class="select">
|
<el-option v-for="item in elementList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
<el-option label="id" value="id"></el-option>
|
</el-select>
|
||||||
<el-option label="name" value="name"></el-option>
|
</div>
|
||||||
<el-option label="className" value="className"></el-option>
|
<!-- 元素定位 -->
|
||||||
<el-option label="tagName" value="tagName"></el-option>
|
<div v-show="content.operateObject === '2'" class="operateObject-wrap">
|
||||||
<el-option label="linkText" value="linkText"></el-option>
|
<el-select v-model="content.operateLocType" class="select">
|
||||||
<el-option label="partialLinkText" value="partialLinkText"></el-option>
|
<el-option label="id" value="id"></el-option>
|
||||||
<el-option label="css" value="css"></el-option>
|
<el-option label="name" value="name"></el-option>
|
||||||
<el-option label="xpath" value="xpath"></el-option>
|
<el-option label="className" value="className"></el-option>
|
||||||
<el-option label="table" value="table"></el-option>
|
<el-option label="tagName" value="tagName"></el-option>
|
||||||
<el-option label="value" value="value"></el-option>
|
<el-option label="linkText" value="linkText"></el-option>
|
||||||
<el-option label="index" value="index"></el-option>
|
<el-option label="partialLinkText" value="partialLinkText"></el-option>
|
||||||
</el-select>
|
<el-option label="css" value="css"></el-option>
|
||||||
<el-input v-model="content.operateLocValue" placeholder="请输入元素名称" class="select"></el-input>
|
<el-option label="xpath" value="xpath"></el-option>
|
||||||
|
<el-option label="table" value="table"></el-option>
|
||||||
|
<el-option label="value" value="value"></el-option>
|
||||||
|
<el-option label="index" value="index"></el-option>
|
||||||
|
</el-select>
|
||||||
|
<el-input v-model="content.operateLocValue" placeholder="请输入元素名称" class="select"></el-input>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="time-right">
|
||||||
|
<el-switch v-model="content.isDisabled" :active-value="1" :inactive-value="0"></el-switch>
|
||||||
|
<el-button type="text" icon="el-icon-delete" style="color: red;" @click="deleteAssertion('2', index, index2)"></el-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="time-right">
|
<!-- 断言方式和期望值部分 -->
|
||||||
<el-switch v-model="content.isDisabled" :active-value="1" :inactive-value="0"></el-switch>
|
<div class="assertion-content">
|
||||||
<el-button type="text" icon="el-icon-delete" style="color: red;" @click="deleteAssertion('2', index, index2)"></el-button>
|
<el-select v-model="content.assertionMode" class="select" style="width: 100%; margin-bottom: 10px;">
|
||||||
</div>
|
|
||||||
<div class="time-left">
|
|
||||||
<el-select v-model="content.assertionMode">
|
|
||||||
<el-option key="1" label="元素被选中(Checked)" value="1"></el-option>
|
<el-option key="1" label="元素被选中(Checked)" value="1"></el-option>
|
||||||
<el-option key="2" label="元素可编辑(Editable)" value="2"></el-option>
|
<el-option key="2" label="元素可编辑(Editable)" value="2"></el-option>
|
||||||
<el-option key="3" label="元素存在(ElementPresent)" value="3"></el-option>
|
<el-option key="3" label="元素存在(ElementPresent)" value="3"></el-option>
|
||||||
@@ -463,59 +467,69 @@
|
|||||||
<el-option key="10" label="元素文本包含期望(InText)" value="10"></el-option>
|
<el-option key="10" label="元素文本包含期望(InText)" value="10"></el-option>
|
||||||
<el-option key="11" label="元素文本不包含期望(NotInText)" value="11"></el-option>
|
<el-option key="11" label="元素文本不包含期望(NotInText)" value="11"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-input v-model="content.expectations" placeholder="请输入期望值"></el-input>
|
<el-input
|
||||||
|
v-model="content.expectations"
|
||||||
|
placeholder="请输入期望值"
|
||||||
|
class="select"
|
||||||
|
:disabled="['1','2','3','4','5','6'].includes(content.assertionMode)"
|
||||||
|
style="width: 100%;">
|
||||||
|
</el-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 下拉框 -->
|
<!-- 下拉框 -->
|
||||||
<div v-if="item.assertionQOList && item.assertionQOList.dropdownBoxes && item.assertionQOList.dropdownBoxes.length > 0" class="information">
|
<div v-if="item.assertionQOList && item.assertionQOList.dropdownBoxes && item.assertionQOList.dropdownBoxes.length > 0" class="information">
|
||||||
<div>下拉框</div>
|
<div>下拉框</div>
|
||||||
<div v-for="(content, index2) in item.assertionQOList.dropdownBoxes" class="time">
|
<div v-for="(content, index2) in item.assertionQOList.dropdownBoxes" class="assertion-block">
|
||||||
<div class="time-left">
|
<!-- 元素选择部分 -->
|
||||||
<div class="operateObject-wrap">
|
<div class="time">
|
||||||
<el-select v-model="content.operateObject" class="select" @change="() => handleOperateObjectChange(content)">
|
<div class="time-left">
|
||||||
<el-option key="1" label="元素对象" value="1"></el-option>
|
<div class="operateObject-wrap">
|
||||||
<el-option key="2" label="元素定位" value="2"></el-option>
|
<el-select v-model="content.operateObject" class="select" @change="() => handleOperateObjectChange(content)">
|
||||||
</el-select>
|
<el-option key="1" label="元素对象" value="1"></el-option>
|
||||||
<!-- 元素对象 -->
|
<el-option key="2" label="元素定位" value="2"></el-option>
|
||||||
<div v-show="content.operateObject === '1'" class="operateObject-wrap">
|
|
||||||
<el-select v-model="content.operateGroupId" class="select" @change="handleDropdownBoxGroupChange(content)" placeholder="请选择元素组">
|
|
||||||
<el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select v-model="content.operateElementId" class="select" placeholder="请选择元素">
|
<!-- 元素对象 -->
|
||||||
<el-option v-for="item in elementList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
<div v-show="content.operateObject === '1'" class="operateObject-wrap">
|
||||||
</el-select>
|
<el-select v-model="content.operateGroupId" class="select" @change="handleDropdownBoxGroupChange(content)" placeholder="请选择元素组">
|
||||||
</div>
|
<el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
<!-- 元素定位 -->
|
</el-select>
|
||||||
<div v-show="content.operateObject === '2'" class="operateObject-wrap">
|
<el-select v-model="content.operateElementId" class="select" placeholder="请选择元素">
|
||||||
<el-select v-model="content.operateLocType" class="select">
|
<el-option v-for="item in elementList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
<el-option label="id" value="id"></el-option>
|
</el-select>
|
||||||
<el-option label="name" value="name"></el-option>
|
</div>
|
||||||
<el-option label="className" value="className"></el-option>
|
<!-- 元素定位 -->
|
||||||
<el-option label="tagName" value="tagName"></el-option>
|
<div v-show="content.operateObject === '2'" class="operateObject-wrap">
|
||||||
<el-option label="linkText" value="linkText"></el-option>
|
<el-select v-model="content.operateLocType" class="select">
|
||||||
<el-option label="partialLinkText" value="partialLinkText"></el-option>
|
<el-option label="id" value="id"></el-option>
|
||||||
<el-option label="css" value="css"></el-option>
|
<el-option label="name" value="name"></el-option>
|
||||||
<el-option label="xpath" value="xpath"></el-option>
|
<el-option label="className" value="className"></el-option>
|
||||||
<el-option label="table" value="table"></el-option>
|
<el-option label="tagName" value="tagName"></el-option>
|
||||||
<el-option label="value" value="value"></el-option>
|
<el-option label="linkText" value="linkText"></el-option>
|
||||||
<el-option label="index" value="index"></el-option>
|
<el-option label="partialLinkText" value="partialLinkText"></el-option>
|
||||||
</el-select>
|
<el-option label="css" value="css"></el-option>
|
||||||
<el-input v-model="content.operateLocValue" placeholder="请输入元素名称" class="select"></el-input>
|
<el-option label="xpath" value="xpath"></el-option>
|
||||||
|
<el-option label="table" value="table"></el-option>
|
||||||
|
<el-option label="value" value="value"></el-option>
|
||||||
|
<el-option label="index" value="index"></el-option>
|
||||||
|
</el-select>
|
||||||
|
<el-input v-model="content.operateLocValue" placeholder="请输入元素名称" class="select"></el-input>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="time-right">
|
||||||
|
<el-switch v-model="content.isDisabled" :active-value="1" :inactive-value="0"></el-switch>
|
||||||
|
<el-button type="text" icon="el-icon-delete" style="color: red;" @click="deleteAssertion('3', index, index2)"></el-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="time-right">
|
<!-- 断言方式和期望值部分 -->
|
||||||
<el-switch v-model="content.isDisabled" :active-value="1" :inactive-value="0"></el-switch>
|
<div class="assertion-content">
|
||||||
<el-button type="text" icon="el-icon-delete" style="color: red;" @click="deleteAssertion('3', index, index2)"></el-button>
|
<el-select v-model="content.assertionMode" class="select" style="width: 100%; margin-bottom: 10px;">
|
||||||
</div>
|
|
||||||
<div class="time-left">
|
|
||||||
<el-select v-model="content.assertionMode">
|
|
||||||
<el-option key="1" label="所选元素的值等于期望(SelectedValue)" value="1"></el-option>
|
<el-option key="1" label="所选元素的值等于期望(SelectedValue)" value="1"></el-option>
|
||||||
<el-option key="2" label="下拉框选项显示的文本等于期望(SelectedLabel) " value="2"></el-option>
|
<el-option key="2" label="下拉框选项显示的文本等于期望(SelectedLabel) " value="2"></el-option>
|
||||||
<el-option key="3" label="所选元素的值不等于期望(NotSelectedValue) " value="3"></el-option>
|
<el-option key="3" label="所选元素的值不等于期望(NotSelectedValue) " value="3"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-input v-model="content.expectations" placeholder="请输入期望值"></el-input>
|
<el-input v-model="content.expectations" placeholder="请输入期望值" class="select" style="width: 100%;"></el-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -524,7 +538,7 @@
|
|||||||
<div>网页标题</div>
|
<div>网页标题</div>
|
||||||
<div v-for="(content, index2) in item.assertionQOList.webTitles" class="time">
|
<div v-for="(content, index2) in item.assertionQOList.webTitles" class="time">
|
||||||
<div class="time-left">
|
<div class="time-left">
|
||||||
<el-input v-model="content.expectations" placeholder="请输入期望的网页标题"></el-input>
|
<el-input v-model="content.expectations" placeholder="请输入期望的网页标题" style="width: 300px;"></el-input>
|
||||||
</div>
|
</div>
|
||||||
<div class="time-right">
|
<div class="time-right">
|
||||||
<el-switch v-model="content.isDisabled" :active-value="1" :inactive-value="0"></el-switch>
|
<el-switch v-model="content.isDisabled" :active-value="1" :inactive-value="0"></el-switch>
|
||||||
@@ -709,6 +723,7 @@ export default {
|
|||||||
},
|
},
|
||||||
isDisabled: '1',
|
isDisabled: '1',
|
||||||
name: '数据提取',
|
name: '数据提取',
|
||||||
|
activeCollapse: '', // 初始化折叠面板状态
|
||||||
}
|
}
|
||||||
this.saveForm.beforeList.push(param)
|
this.saveForm.beforeList.push(param)
|
||||||
}
|
}
|
||||||
@@ -736,6 +751,7 @@ export default {
|
|||||||
},
|
},
|
||||||
isDisabled: '1',
|
isDisabled: '1',
|
||||||
name: '数据提取',
|
name: '数据提取',
|
||||||
|
activeCollapse: '', // 初始化折叠面板状态
|
||||||
}
|
}
|
||||||
this.saveForm.afterList.push(param)
|
this.saveForm.afterList.push(param)
|
||||||
} else {
|
} else {
|
||||||
@@ -745,6 +761,7 @@ export default {
|
|||||||
operateType: '2', // 断言
|
operateType: '2', // 断言
|
||||||
isDisabled: '1',
|
isDisabled: '1',
|
||||||
name: '断言',
|
name: '断言',
|
||||||
|
activeCollapse: '', // 初始化折叠面板状态
|
||||||
assertionQOList: {
|
assertionQOList: {
|
||||||
popupTexts: [], // 弹窗文本
|
popupTexts: [], // 弹窗文本
|
||||||
elementAssertions: [], // 元素断言
|
elementAssertions: [], // 元素断言
|
||||||
@@ -892,15 +909,15 @@ export default {
|
|||||||
break
|
break
|
||||||
case '2':
|
case '2':
|
||||||
// 元素断言
|
// 元素断言
|
||||||
this.saveForm.afterList[val].assertionQOList.popupTexts = this.saveForm.afterList[val].assertionQOList.elementAssertions.filter((item, index) => index !== val2)
|
this.saveForm.afterList[val].assertionQOList.elementAssertions = this.saveForm.afterList[val].assertionQOList.elementAssertions.filter((item, index) => index !== val2)
|
||||||
break
|
break
|
||||||
case '3':
|
case '3':
|
||||||
// 下拉框
|
// 下拉框
|
||||||
this.saveForm.afterList[val].assertionQOList.popupTexts = this.saveForm.afterList[val].assertionQOList.dropdownBoxes.filter((item, index) => index !== val2)
|
this.saveForm.afterList[val].assertionQOList.dropdownBoxes = this.saveForm.afterList[val].assertionQOList.dropdownBoxes.filter((item, index) => index !== val2)
|
||||||
break
|
break
|
||||||
case '4':
|
case '4':
|
||||||
// 网页标题
|
// 网页标题
|
||||||
this.saveForm.afterList[val].assertionQOList.popupTexts = this.saveForm.afterList[val].assertionQOList.webTitles.filter((item, index) => index !== val2)
|
this.saveForm.afterList[val].assertionQOList.webTitles = this.saveForm.afterList[val].assertionQOList.webTitles.filter((item, index) => index !== val2)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1058,7 +1075,7 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.advanced-setting {
|
.advanced-setting {
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
|
|
||||||
@@ -1107,45 +1124,73 @@ export default {
|
|||||||
width: 200px;
|
width: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.list {
|
.list {
|
||||||
padding: 20px 0px;
|
padding: 20px 0px;
|
||||||
|
|
||||||
|
.el-collapse {
|
||||||
|
margin: 15px 0;
|
||||||
|
border-top: 1px solid #EBEEF5;
|
||||||
|
border-bottom: 1px solid #EBEEF5;
|
||||||
|
|
||||||
|
::v-deep .el-collapse-item__header {
|
||||||
|
padding: 15px 0;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-collapse-item__wrap {
|
||||||
|
padding: 10px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.number {
|
.number {
|
||||||
height: 24px;
|
height: 28px;
|
||||||
width: 24px;
|
width: 28px;
|
||||||
border-radius: 12px;
|
border-radius: 50%;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
border: solid 1px black;
|
background-color: #409EFF;
|
||||||
|
color: white;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
box-shadow: 0 2px 4px rgba(64, 158, 255, 0.2);
|
||||||
|
margin-right: 10px;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.time {
|
.time {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 10px;
|
padding: 15px;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
|
&:hover .number {
|
||||||
|
transform: scale(1.05);
|
||||||
|
}
|
||||||
|
|
||||||
.time-right {
|
.time-right {
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.time-left {
|
.time-left {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
|
|
||||||
|
> div:nth-child(2) { // 针对操作名称文字(等待时间、断言等)
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.collapse-content {
|
.collapse-content {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.operateObject-wrap {
|
.operateObject-wrap {
|
||||||
@@ -1156,5 +1201,67 @@ export default {
|
|||||||
.information {
|
.information {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.assertion-block {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px solid #EBEEF5;
|
||||||
|
border-radius: 4px;
|
||||||
|
|
||||||
|
.assertion-content {
|
||||||
|
margin-top: 10px;
|
||||||
|
padding: 10px;
|
||||||
|
background-color: #f5f7fa;
|
||||||
|
border-radius: 4px;
|
||||||
|
|
||||||
|
.select, .el-input {
|
||||||
|
width: 300px !important;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.operateObject-wrap {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 10px;
|
||||||
|
|
||||||
|
.select {
|
||||||
|
min-width: 200px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.time {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
|
||||||
|
.time-left {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time-right {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.select {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.information {
|
||||||
|
margin-top: 20px;
|
||||||
|
|
||||||
|
> div:first-child {
|
||||||
|
font-weight: bold;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,57 +1,60 @@
|
|||||||
<template>
|
<template>
|
||||||
<folder-page type="automation" @click="folderHandleSelected" ref="folder">
|
<folder-page type="automation" @click="folderHandleSelected" ref="folder">
|
||||||
<div class="header">
|
<div v-if="searchForm.groupId">
|
||||||
<el-dropdown @command="handleCommand">
|
<div class="header">
|
||||||
<span class="el-dropdown-link">
|
<el-dropdown @command="handleCommand">
|
||||||
<i style="border: 1px solid #DCDFE6; padding: 5px 15px; border-radius: 4px;" class="el-icon-plus"></i>
|
<span class="el-dropdown-link">
|
||||||
</span>
|
<i style="border: 1px solid #DCDFE6; padding: 5px 15px; border-radius: 4px;" class="el-icon-plus"></i>
|
||||||
<el-dropdown-menu slot="dropdown">
|
</span>
|
||||||
<el-dropdown-item command="1">创建场景</el-dropdown-item>
|
<el-dropdown-menu slot="dropdown">
|
||||||
</el-dropdown-menu>
|
<el-dropdown-item command="1">创建场景</el-dropdown-item>
|
||||||
</el-dropdown>
|
</el-dropdown-menu>
|
||||||
<div class="searchInput">
|
</el-dropdown>
|
||||||
<i class="el-icon-search"></i>
|
<div class="searchInput">
|
||||||
<el-input class="input" v-model="searchForm.keyword" placeholder="根据名称搜索" @blur="searchList"></el-input>
|
<i class="el-icon-search"></i>
|
||||||
|
<el-input class="input" v-model="searchForm.keyword" placeholder="根据名称搜索" @blur="searchList"></el-input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="list">
|
||||||
|
<el-table :data="automationList">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column prop="id" label="ID" width="50" align="center" />
|
||||||
|
<el-table-column prop="name" label="场景名称" min-width="150" align="center" sortable />
|
||||||
|
<el-table-column prop="caseLevel" label="用例等级" min-width="150" align="center" sortable>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-tag v-if="scope.row.caseLevel" :type="priorityColor[scope.row.caseLevel]">{{ scope.row.caseLevel
|
||||||
|
}}</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="status" label="状态" min-width="150" align="center" sortable>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div v-if="scope.row.status === '1'">未开始</div>
|
||||||
|
<div v-if="scope.row.status === '2'">进行中</div>
|
||||||
|
<div v-if="scope.row.status === '3'">已完成</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="label" label="标签" min-width="150" align="center" />
|
||||||
|
<el-table-column prop="createBy" label="创建人" min-width="150" align="center" sortable />
|
||||||
|
<el-table-column prop="dutyBy" label="责任人" min-width="150" align="center" sortable />
|
||||||
|
<el-table-column prop="updateTime" label="最后更新时间" min-width="180" align="center" sortable />
|
||||||
|
<el-table-column prop="stepsNumber" label="步骤数" min-width="80" align="center" />
|
||||||
|
<el-table-column prop="executionResult" label="执行结果" min-width="150" align="center" sortable />
|
||||||
|
<el-table-column prop="passRate" label="通过率" min-width="150" align="center" sortable />
|
||||||
|
<el-table-column prop="action" label="操作" align="center" fixed="right" width="200px">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button type="text" icon="el-icon-edit-outline" @click="hadleClickEdit(scope.row)">编辑</el-button>
|
||||||
|
<el-button type="text" icon="el-icon-view" @click="handleClickDetail(scope.row)"
|
||||||
|
style="color: green;">执行</el-button>
|
||||||
|
<el-button type="text" icon="el-icon-delete" style="color: red;"
|
||||||
|
@click="hadleClickDelete(scope.row)">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
||||||
|
:page-size="searchForm.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="list">
|
<el-empty v-else/>
|
||||||
<el-table :data="automationList">
|
|
||||||
<el-table-column type="selection" width="55" />
|
|
||||||
<el-table-column prop="id" label="ID" width="50" align="center" />
|
|
||||||
<el-table-column prop="name" label="场景名称" min-width="150" align="center" sortable />
|
|
||||||
<el-table-column prop="caseLevel" label="用例等级" min-width="150" align="center" sortable>
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<el-tag v-if="scope.row.caseLevel" :type="priorityColor[scope.row.caseLevel]">{{ scope.row.caseLevel
|
|
||||||
}}</el-tag>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="status" label="状态" min-width="150" align="center" sortable>
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<div v-if="scope.row.status === '1'">未开始</div>
|
|
||||||
<div v-if="scope.row.status === '2'">进行中</div>
|
|
||||||
<div v-if="scope.row.status === '3'">已完成</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="label" label="标签" min-width="150" align="center" />
|
|
||||||
<el-table-column prop="createBy" label="创建人" min-width="150" align="center" sortable />
|
|
||||||
<el-table-column prop="dutyBy" label="责任人" min-width="150" align="center" sortable />
|
|
||||||
<el-table-column prop="updateTime" label="最后更新时间" min-width="180" align="center" sortable />
|
|
||||||
<el-table-column prop="stepsNumber" label="步骤数" min-width="80" align="center" />
|
|
||||||
<el-table-column prop="executionResult" label="执行结果" min-width="150" align="center" sortable />
|
|
||||||
<el-table-column prop="passRate" label="通过率" min-width="150" align="center" sortable />
|
|
||||||
<el-table-column prop="action" label="操作" align="center" fixed="right" width="200px">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<el-button type="text" icon="el-icon-edit-outline" @click="hadleClickEdit(scope.row)">编辑</el-button>
|
|
||||||
<el-button type="text" icon="el-icon-view" @click="handleClickDetail(scope.row)"
|
|
||||||
style="color: green;">执行</el-button>
|
|
||||||
<el-button type="text" icon="el-icon-delete" style="color: red;"
|
|
||||||
@click="hadleClickDelete(scope.row)">删除</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
<el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
|
||||||
:page-size="searchForm.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total" />
|
|
||||||
</div>
|
|
||||||
</folder-page>
|
</folder-page>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -60,7 +63,7 @@ import FolderPage from "@/components/FolderPage/index.vue"
|
|||||||
import { getAutomationList, deleteAutomation, executeAutomationData } from "../../../api/uiTest/automationTest";
|
import { getAutomationList, deleteAutomation, executeAutomationData } from "../../../api/uiTest/automationTest";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "AutomationTest",
|
name: "AutomationTestView",
|
||||||
components: { FolderPage },
|
components: { FolderPage },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -79,18 +82,27 @@ export default {
|
|||||||
groupId: null,
|
groupId: null,
|
||||||
},
|
},
|
||||||
total: 0,
|
total: 0,
|
||||||
|
isFromEdit: false, // 添加标记,用于判断是否从编辑页面返回
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
activated() {
|
||||||
|
// 当从编辑页面返回时,不刷新列表
|
||||||
|
if (this.isFromEdit) {
|
||||||
|
this.isFromEdit = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
folderHandleSelected(id) {
|
folderHandleSelected(id) {
|
||||||
if (id) {
|
if (id) {
|
||||||
// 获取列表
|
|
||||||
this.searchForm.groupId = id;
|
this.searchForm.groupId = id;
|
||||||
this.getAutomationListData();
|
// 只有不是从编辑页面返回时才刷新列表
|
||||||
|
if (!this.isFromEdit) {
|
||||||
|
this.getAutomationListData();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
this.automationList = [];
|
this.automationList = [];
|
||||||
|
this.searchForm.groupId = null;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 获取列表
|
// 获取列表
|
||||||
@@ -112,6 +124,7 @@ export default {
|
|||||||
},
|
},
|
||||||
// 编辑
|
// 编辑
|
||||||
hadleClickEdit(val) {
|
hadleClickEdit(val) {
|
||||||
|
this.isFromEdit = true; // 标记即将进入编辑页面
|
||||||
this.$tab.openPage("编辑场景", "/ui-test/automation/edit", { id: val.id });
|
this.$tab.openPage("编辑场景", "/ui-test/automation/edit", { id: val.id });
|
||||||
},
|
},
|
||||||
// 删除
|
// 删除
|
||||||
|
|||||||
Reference in New Issue
Block a user