ui测试前后端问题修复
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
package com.test.test.controller;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.test.common.utils.SeleniumUtils;
|
||||
import com.test.test.domain.UiAutomation;
|
||||
import com.test.test.domain.UiReport;
|
||||
import com.test.test.domain.qo.UiAutomationDataQO;
|
||||
import com.test.test.domain.qo.UiAutomationQO;
|
||||
import com.test.test.service.IUiAutomationService;
|
||||
|
||||
@@ -50,10 +50,10 @@ public class UiSceneStepsQO extends BaseEntity
|
||||
private String operateObject;
|
||||
|
||||
/** 元素库名称 */
|
||||
private Integer operateGroupId;
|
||||
private Long operateGroupId;
|
||||
|
||||
/** 元素id */
|
||||
private Integer operateElementId;
|
||||
private Long operateElementId;
|
||||
|
||||
/** 元素定位类型 */
|
||||
private String operateLocType;
|
||||
|
||||
@@ -44,10 +44,10 @@ public class UiSceneStepsVO
|
||||
private String operateObject;
|
||||
|
||||
/** 元素库名称 */
|
||||
private Integer operateGroupId;
|
||||
private Long operateGroupId;
|
||||
|
||||
/** 元素id */
|
||||
private Integer operateElementId;
|
||||
private Long operateElementId;
|
||||
|
||||
/** 元素定位类型 */
|
||||
private String operateLocType;
|
||||
|
||||
@@ -99,18 +99,19 @@ public class UiSceneStepsServiceImpl implements IUiSceneStepsService {
|
||||
createSceneStepsReport(orderNumber, step, reportId);
|
||||
}
|
||||
System.setProperty("webdriver.chrome.driver", chromeDriverPath);
|
||||
// 2. 创建一个临时目录作为 user-data-dir
|
||||
String uniqueUserDataDir="/tmp/chrome-"+ UUID.randomUUID();
|
||||
|
||||
// 3. 配置 ChromeOptions
|
||||
|
||||
// 配置 ChromeOptions
|
||||
ChromeOptions options = new ChromeOptions();
|
||||
options.addArguments("--headless"); // 改用传统无头模式(非 `--headless=new`)
|
||||
options.addArguments("--incognito"); // 无痕模式,不使用 user-data-dir
|
||||
options.addArguments("--no-sandbox"); // Docker/Linux 可能需要
|
||||
options.addArguments("--disable-dev-shm-usage"); // 避免 /dev/shm 不足
|
||||
options.addArguments("--remote-allow-origins=*"); // Chrome 11+ 需要
|
||||
// options.addArguments("--user-data-dir=" + uniqueUserDataDir); // 关键:唯一目录
|
||||
// 4. 启动 Chrome
|
||||
options.addArguments("--headless");
|
||||
options.addArguments("--no-sandbox");
|
||||
options.addArguments("--disable-dev-shm-usage");
|
||||
options.addArguments("--remote-allow-origins=*");
|
||||
options.addArguments("--disable-gpu");
|
||||
options.addArguments("--disable-extensions");
|
||||
options.addArguments("--disable-plugins");
|
||||
options.addArguments("--disable-software-rasterizer");
|
||||
|
||||
// 创建 ChromeDriver
|
||||
WebDriver driver = new ChromeDriver(options);
|
||||
|
||||
SeleniumUtils seleniumUtils = new SeleniumUtils(driver);
|
||||
|
||||
@@ -953,13 +953,12 @@ export default {
|
||||
// 其他设置
|
||||
case '4':
|
||||
if (item.otherSettingsQO != null) {
|
||||
this.saveForm.waitElementTime = item.otherSettingsQO.waitElementTime
|
||||
this.saveForm.screenshotConfiguration = item.otherSettingsQO.screenshotConfiguration
|
||||
this.saveForm.waitElementTime = item.otherSettingsQO.waitElementTime || 15000
|
||||
this.saveForm.screenshotConfiguration = item.otherSettingsQO.screenshotConfiguration || 2
|
||||
}
|
||||
break
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
saveForm: {
|
||||
handler(newVal, oldVal) {
|
||||
@@ -977,8 +976,10 @@ export default {
|
||||
// 其他设置
|
||||
var param4 = {
|
||||
settingType: '4',
|
||||
waitElementTime: this.saveForm.waitElementTime,
|
||||
screenshotConfiguration: this.saveForm.screenshotConfiguration,
|
||||
otherSettingsQO: {
|
||||
waitElementTime: this.saveForm.waitElementTime,
|
||||
screenshotConfiguration: this.saveForm.screenshotConfiguration
|
||||
}
|
||||
}
|
||||
newList.push(param4)
|
||||
this.$emit('changeSetting', newList)
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
<div v-if="scope.row.status === '3'">已完成</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</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 />
|
||||
|
||||
@@ -101,12 +101,20 @@
|
||||
</div>
|
||||
<!-- 元素定位 -->
|
||||
<div v-show="saveForm.operateObject === '2'" class="operateObject-wrap">
|
||||
<el-select v-model="saveForm.operateLocType" class="select" @change="getOperateLoc">
|
||||
<el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
<el-select v-model="saveForm.operateLocValue" class="select">
|
||||
<el-option v-for="item in elementList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
<el-select v-model="saveForm.operateLocType" class="select">
|
||||
<el-option label="id" value="id"></el-option>
|
||||
<el-option label="name" value="name"></el-option>
|
||||
<el-option label="className" value="className"></el-option>
|
||||
<el-option label="tagName" value="tagName"></el-option>
|
||||
<el-option label="linkText" value="linkText"></el-option>
|
||||
<el-option label="partialLinkText" value="partialLinkText"></el-option>
|
||||
<el-option label="css" value="css"></el-option>
|
||||
<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="saveForm.operateLocValue" placeholder="请输入元素名称" class="select"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
@@ -155,12 +163,20 @@
|
||||
</div>
|
||||
<!-- 元素定位 -->
|
||||
<div v-show="saveForm.operateObject === '2'" class="operateObject-wrap">
|
||||
<el-select v-model="saveForm.operateLocType" class="select" @change="getOperateLoc">
|
||||
<el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
<el-select v-model="saveForm.operateLocValue" class="select">
|
||||
<el-option v-for="item in elementList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
<el-select v-model="saveForm.operateLocType" class="select">
|
||||
<el-option label="id" value="id"></el-option>
|
||||
<el-option label="name" value="name"></el-option>
|
||||
<el-option label="className" value="className"></el-option>
|
||||
<el-option label="tagName" value="tagName"></el-option>
|
||||
<el-option label="linkText" value="linkText"></el-option>
|
||||
<el-option label="partialLinkText" value="partialLinkText"></el-option>
|
||||
<el-option label="css" value="css"></el-option>
|
||||
<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="saveForm.operateLocValue" placeholder="请输入元素名称" class="select"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
@@ -216,12 +232,20 @@
|
||||
</div>
|
||||
<!-- 元素定位 -->
|
||||
<div v-show="saveForm.operateObject === '2'" class="operateObject-wrap">
|
||||
<el-select v-model="saveForm.operateLocType" class="select" @change="getOperateLoc">
|
||||
<el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
<el-select v-model="saveForm.operateLocValue" class="select">
|
||||
<el-option v-for="item in elementList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
<el-select v-model="saveForm.operateLocType" class="select">
|
||||
<el-option label="id" value="id"></el-option>
|
||||
<el-option label="name" value="name"></el-option>
|
||||
<el-option label="className" value="className"></el-option>
|
||||
<el-option label="tagName" value="tagName"></el-option>
|
||||
<el-option label="linkText" value="linkText"></el-option>
|
||||
<el-option label="partialLinkText" value="partialLinkText"></el-option>
|
||||
<el-option label="css" value="css"></el-option>
|
||||
<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="saveForm.operateLocValue" placeholder="请输入元素名称" class="select"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
@@ -249,12 +273,20 @@
|
||||
</div>
|
||||
<!-- 元素定位 -->
|
||||
<div v-show="saveForm.operateObject === '2'" class="operateObject-wrap">
|
||||
<el-select v-model="saveForm.operateLocType" class="select" @change="getOperateLoc">
|
||||
<el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
<el-select v-model="saveForm.operateLocValue" class="select">
|
||||
<el-option v-for="item in elementList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
<el-select v-model="saveForm.operateLocType" class="select">
|
||||
<el-option label="id" value="id"></el-option>
|
||||
<el-option label="name" value="name"></el-option>
|
||||
<el-option label="className" value="className"></el-option>
|
||||
<el-option label="tagName" value="tagName"></el-option>
|
||||
<el-option label="linkText" value="linkText"></el-option>
|
||||
<el-option label="partialLinkText" value="partialLinkText"></el-option>
|
||||
<el-option label="css" value="css"></el-option>
|
||||
<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="saveForm.operateLocValue" placeholder="请输入元素名称" class="select"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
@@ -289,12 +321,20 @@
|
||||
</div>
|
||||
<!-- 元素定位 -->
|
||||
<div v-show="saveForm.operateObject === '2'" class="operateObject-wrap">
|
||||
<el-select v-model="saveForm.operateLocType" class="select" @change="getOperateLoc">
|
||||
<el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
<el-select v-model="saveForm.operateLocValue" class="select">
|
||||
<el-option v-for="item in elementList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
<el-select v-model="saveForm.operateLocType" class="select">
|
||||
<el-option label="id" value="id"></el-option>
|
||||
<el-option label="name" value="name"></el-option>
|
||||
<el-option label="className" value="className"></el-option>
|
||||
<el-option label="tagName" value="tagName"></el-option>
|
||||
<el-option label="linkText" value="linkText"></el-option>
|
||||
<el-option label="partialLinkText" value="partialLinkText"></el-option>
|
||||
<el-option label="css" value="css"></el-option>
|
||||
<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="saveForm.operateLocValue" placeholder="请输入元素名称" class="select"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
@@ -463,7 +503,7 @@ export default {
|
||||
// 判断步骤类型
|
||||
switch (newVal.stepType) {
|
||||
case '1': // 提交表单
|
||||
this.typeTitle = '针对属性type="submit”的元素,用于提交表单数据'
|
||||
this.typeTitle = '针对属性type="submit"的元素,用于提交表单数据'
|
||||
break
|
||||
case '2': // 下拉框操作
|
||||
this.typeTitle = '对下拉选项进行操作,可实现单选,多选,以及取消选择的操作'
|
||||
|
||||
Reference in New Issue
Block a user