提交 9afe6550 authored 作者: 黄承天's avatar 黄承天

修正图片静态资源提供;文件全上传;

上级 88787a85
......@@ -99,7 +99,7 @@
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
<version>4.0.0-alpha-5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
......@@ -107,6 +107,12 @@
<artifactId>jsoup</artifactId>
<version>1.13.1</version>
</dependency>
<dependency>
<groupId>net.lightbody.bmp</groupId>
<artifactId>browsermob-core</artifactId>
<version>2.1.5</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
......@@ -135,17 +141,7 @@
</plugins>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/webapp</directory>
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/**</include>
</includes>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
......
package com.zjty.autotest.common.action;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Description : autotest
* <p>Date : 2020/4/28 16:00
* <p>@author : C
*/
public interface ExecuteMode {
String DEFAULT = "default";
String FAST = "fast";
}
package com.zjty.autotest.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* <p>Description : autotest
* <p>Date : 2020/5/12 15:43
* <p>@author : C
*/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//项目相对路径+项目动态绝对路径
String workPath = System.getProperty("user.dir");
registry.addResourceHandler("/screenshot/**").
addResourceLocations("file:" + "./screenshots/");
}
}
package com.zjty.autotest.controller;
import com.zjty.autotest.mq.TestTask;
import com.zjty.autotest.pojo.sjq.AutoResultSet;
import com.zjty.autotest.pojo.sjq.TestChannel;
import com.zjty.autotest.pojo.sjq.TestReport;
import com.zjty.autotest.pojo.sjq.common.PageResult;
import com.zjty.autotest.pojo.sjq.common.ResponseResult;
import com.zjty.autotest.service.AutoResultSetService;
import com.zjty.autotest.service.impl.SeleniumExecutor;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -23,6 +25,8 @@ public class AutoResultSetController {
@Autowired
private AutoResultSetService autoResultSetService;
@Autowired
private SeleniumExecutor seleniumExecutor;
/**
* 分页+多条件查询
......@@ -35,7 +39,7 @@ public class AutoResultSetController {
@RequestMapping(value="/search/{page}/{size}",method=RequestMethod.POST)
public ResponseResult findSearch(@RequestBody Map searchMap , @PathVariable int page, @PathVariable int size){
Page<AutoResultSet> pageList = autoResultSetService.findSearch(searchMap, page, size);
return ResponseResult.okResult( new PageResult<AutoResultSet>(pageList.getTotalElements(), pageList.getContent()) );
return ResponseResult.okResult(new PageResult<>(pageList.getTotalElements(), pageList.getContent()) );
}
@ApiOperation("根据id删除")
@RequestMapping(value="/{id}",method= RequestMethod.DELETE)
......@@ -49,6 +53,11 @@ public class AutoResultSetController {
return autoResultSetService.addResultSet(testChannel);
}
@ApiOperation("停止当前进行中的测试")
@GetMapping("/quit")
public ResponseResult quit(){
seleniumExecutor.quit();
return ResponseResult.okResult(200,"ok");
}
}
......@@ -12,13 +12,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class ResourceController {
@RequestMapping("index")
@RequestMapping("/page")
public String index(){
return "index.html";
}
@RequestMapping("/screenshot/{name}")
public String picture(@PathVariable String name){
return name + ".png";
}
}
......@@ -30,7 +30,6 @@ public class TestReportController {
@Autowired
private TestReportService testReportService;
/**
* 根据ID查询
* @param id ID
......@@ -66,6 +65,7 @@ public class TestReportController {
public ResponseResult findStatus(@RequestBody Map searchMap){
return testReportService.findStatus(searchMap);
}
@RequestMapping(value="/all",method= RequestMethod.GET)
public ResponseResult findAllStatus(){
return testReportService.findAllStatus();
......
......@@ -14,24 +14,27 @@ import java.util.Map;
/**
* 数据访问接口
* @author Administrator
*
* @author Administrator
*/
public interface TestReportDao extends JpaRepository<TestReport,String>, JpaSpecificationExecutor<TestReport> {
@Query(value = "SELECT input_report FROM test_report WHERE result_id = :resultId",nativeQuery = true)
String findByInResultId(@Param("resultId") String resultId);
public interface TestReportDao extends JpaRepository<TestReport, String>, JpaSpecificationExecutor<TestReport> {
@Query(value = "SELECT input_report FROM test_report WHERE result_id = :resultId", nativeQuery = true)
String findByInResultId(@Param("resultId") String resultId);
@Query(value = "select out_report from test_report where result_id =:resultId",nativeQuery = true)
@Query(value = "select out_report from test_report where result_id =:resultId", nativeQuery = true)
String findByOutResultId(@Param("resultId") String resultId);
@Query(value = "select * from test_report where result_id=:resultId",nativeQuery = true)
@Query(value = "select * from test_report where result_id=:resultId", nativeQuery = true)
TestReport findByResultId(@Param("resultId") String resultId);
@Modifying
int deleteByResultId(@Param("resultId") String resultId);
@Modifying
@Transactional
@Query("update TestReport set outReport=:outReport,status=1 where resultId=:resultId")
void updateOut(String outReport,String resultId);
@Query("update TestReport set outReport = :outReport , status=1 where resultId = :resultId")
void updateOut(@Param("outReport") String outReport, @Param("resultId") String resultId);
@Query(value = "select result_id,status from test_report ",nativeQuery = true)
List<Map<String,Object>> findAllStatus();
@Query(value = "select result_id,status from test_report ", nativeQuery = true)
List<Map<String, Object>> findAllStatus();
}
......@@ -58,8 +58,6 @@ public class TestTask {
}
private void doBusiness(String id) {
TestChannel testChannel = (TestChannel) CacheManager.getCache(id);
if (testChannel != null) {
log.info("testChannel不为空:{}", testChannel);
......@@ -68,6 +66,7 @@ public class TestTask {
project.setBrowser(testChannel.getBrowser().toLowerCase());
project.setName(testChannel.getName());
project.setUrl(testChannel.getUrl());
project.setFastmode(testChannel.getFastMode());
List<RuleSet> ruleSets = testChannel.getRuleSets();
List<Input> inputs = new ArrayList<>();
project.setInputs(null);
......@@ -82,15 +81,13 @@ public class TestTask {
}
project.setInputs(inputs);
}
// Report report =testSelenium();
//调用黄承天代码
//调用SeleniumExecutor代码
Report report = seleniumExecutor.execute(project);
log.info("黄承天结束返回 report:{}",report);
log.info("SeleniumExecutor结束返回 report:{}",report);
if(report!=null) {
List<Measure> measures = report.getMeasures();
if (measures != null && measures.size() > 0) {
long count = measures.stream().filter(m -> m.getSuccess() != true).count();
long count = measures.stream().filter(m -> !m.getSuccess()).count();
EvaReport evaReport = new EvaReport();
evaReport.setBrowser("chrome");
// evaReport.setBrowser(report.getBrowser());
......@@ -190,8 +187,7 @@ public class TestTask {
autoResultSetService.updateByid(id, 2);
WebSocketServer.sendInfo("2," + id, "sjq110");
} catch (Exception e) {
log.error("评测失败:{}",e);
e.printStackTrace();
log.error("评测失败:"+e);
try {
autoResultSetService.updateByid(id, 2);
WebSocketServer.sendInfo("2," + id, "sjq110");
......@@ -383,15 +379,4 @@ public class TestTask {
return allPageRoutes;
}
public Report testSelenium(){
System.setProperty("webdriver.chrome.driver", "C:\\Users\\Jey\\Downloads\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
String baseUrl = "http://www.baidu.com/";
driver.get(baseUrl+"/");
WebElement inputBox = driver.findElement(By.id("kw"));
inputBox.sendKeys("CSDN");
driver.findElement(By.id("su")).click();
driver.quit();
return null;
}
}
......@@ -32,6 +32,11 @@ public class TestChannel {
*/
private String browser;
/**
* 浏览器
*/
private Boolean fastMode;
/**
* 测试入口地址
*/
......
package com.zjty.autotest.pojo.test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
/**
* Holds information about a JavaScript error that has occurred in the browser.
* This can be currently only used with the {@link FirefoxDriver} (see {@link #addExtension(FirefoxProfile)}.
* @author Marc Guillemot
* @version $Revision: $
*/
public class JavaScriptError {
private final String errorMessage;
private final String sourceName;
private final int lineNumber;
private final String console;
JavaScriptError(final Map<String, ? extends Object> map) {
errorMessage = (String) map.get("errorMessage");
sourceName = (String) map.get("sourceName");
lineNumber = ((Number) map.get("lineNumber")).intValue();
console = (String) map.get("console");
}
JavaScriptError(final String errorMessage, final String sourceName, final int lineNumber, String console) {
this.errorMessage = errorMessage;
this.sourceName = sourceName;
this.lineNumber = lineNumber;
this.console = console;
}
public String getErrorMessage() {
return errorMessage;
}
public int getLineNumber() {
return lineNumber;
}
public String getSourceName() {
return sourceName;
}
/**
* If Firebug is installed and active, this will contain the content of the Firebug Console since
* the previous JavaScript error.
* @return
*/
public String getConsole() {
return console;
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((console == null) ? 0 : console.hashCode());
result = prime * result
+ ((errorMessage == null) ? 0 : errorMessage.hashCode());
result = prime * result + lineNumber;
result = prime * result
+ ((sourceName == null) ? 0 : sourceName.hashCode());
return result;
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
JavaScriptError other = (JavaScriptError) obj;
if (console == null) {
if (other.console != null) {
return false;
}
} else if (!console.equals(other.console)) {
return false;
}
if (errorMessage == null) {
if (other.errorMessage != null) {
return false;
}
} else if (!errorMessage.equals(other.errorMessage)) {
return false;
}
if (lineNumber != other.lineNumber) {
return false;
}
if (sourceName == null) {
if (other.sourceName != null) {
return false;
}
} else if (!sourceName.equals(other.sourceName)) {
return false;
}
return true;
}
@Override
public String toString() {
String s = errorMessage + " [" + sourceName + ":" + lineNumber + "]";
if (console != null) {
s += "\nConsole: " + console;
}
return s;
}
/**
* Gets the collected JavaScript errors that have occurred since last call to this method.
* @param driver the driver providing the possibility to retrieved JavaScript errors (see {@link #addExtension(FirefoxProfile)}.
* @return the errors or an empty list if the driver doesn't provide access to the JavaScript errors
*/
@SuppressWarnings("unchecked")
public static List<JavaScriptError> readErrors(final WebDriver driver) {
final String script = "return window.JSErrorCollector_errors ? window.JSErrorCollector_errors.pump() : []";
final List<Object> errors = (List<Object>) ((JavascriptExecutor) driver).executeScript(script);
final List<JavaScriptError> response = new ArrayList<JavaScriptError>();
for (final Object rawError : errors) {
response.add(new JavaScriptError((Map<String, ? extends Object>) rawError));
}
return response;
}
/**
* Adds the Firefox extension collecting JS errors to the profile what allows later use of {@link #readErrors(WebDriver)}.
* <p>
* Example:<br>
* <code><pre>
* final FirefoxProfile profile = new FirefoxProfile();
* JavaScriptError.addExtension(profile);
* final WebDriver driver = new FirefoxDriver(profile);
* </pre></code>
* @param ffProfile the Firefox profile to which the extension should be added.
* @throws IOException in case of problem
*/
public static void addExtension(final FirefoxProfile ffProfile) throws IOException {
ffProfile.addExtension(JavaScriptError.class, "JSErrorCollector.xpi");
}
}
......@@ -9,7 +9,6 @@ public class HtmlFileServiceImpl implements HtmlFileService {
@Override
public ResponseResult getRoutes(String fileAddress) {
return null;
}
}
......@@ -15,7 +15,6 @@ import com.zjty.autotest.pojo.test.Project;
import com.zjty.autotest.util.FileUtil;
import com.zjty.autotest.util.WebDriverUtil;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.build.HashCodeAndEqualsPlugin;
import org.apache.logging.log4j.util.Strings;
import org.jsoup.nodes.Element;
import org.openqa.selenium.*;
......@@ -31,6 +30,7 @@ import org.springframework.stereotype.Service;
import sun.net.www.protocol.file.FileURLConnection;
import sun.net.www.protocol.ftp.FtpURLConnection;
import java.io.File;
import java.net.HttpURLConnection;
import java.net.URL;
import java.time.Duration;
......@@ -107,7 +107,7 @@ public class SeleniumExecutor {
currentUrl = project.getUrl();
currentWindow = driver.getWindowHandle();
try {
while (nonNull(currentUrl)) {
while (nonNull(currentUrl) && isRunning) {
Measure measure = testUrl(currentUrl);
if (nonNull(measure)) {
measures.add(measure);
......@@ -136,7 +136,7 @@ public class SeleniumExecutor {
Measure measure = new Measure();
measure.setUrl(currentUrl);
measure.setResponseTime(-1);
//如果该网页是未曾进入过的网页则加入历史记录并进行遍历测试
//如果该网页是未曾测试过的网页则加入历史记录并进行遍历测试
if (!historyUrls.contains(currentUrl)) {
historyUrls.add(currentUrl);
log.info("当前URL:{} ", currentUrl);
......@@ -503,7 +503,8 @@ public class SeleniumExecutor {
private void screenshot(String name) {
byte[] bytes = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
String path;
String suffix = "/";
String suffix = File.separator;
String screenshotPath = System.getProperty("user.dir") + File.separator + "screenshots";
if (screenshotPath.endsWith(suffix)) {
path = screenshotPath + name;
} else {
......
......@@ -23,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
......@@ -49,9 +50,6 @@ public class TestReportServiceImpl implements TestReportService {
return testReportDao.findAll();
}
/**
* 根据ID查询实体
* @param id
......@@ -75,6 +73,7 @@ public class TestReportServiceImpl implements TestReportService {
* 修改
* @param testReport
*/
@Override
public void update(TestReport testReport) {
testReportDao.updateOut(testReport.getOutReport(),testReport.getResultId());
}
......@@ -84,6 +83,7 @@ public class TestReportServiceImpl implements TestReportService {
* @param resultId
*/
@Transient
@Override
public ResponseResult deleteByResultId(String resultId) {
int i = testReportDao.deleteByResultId(resultId);
return ResponseResult.okResult(i);
......
......@@ -16,9 +16,9 @@ public class FileUtil {
public final static String WORK_PATH = System.getProperty("user.dir") + "\\";
public static void output(byte[] bytes,String path) {
public static void output(byte[] bytes, String path) {
File file = new File(path);
if(!file.getParentFile().exists()){
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
try {
......@@ -26,7 +26,7 @@ public class FileUtil {
output.write(bytes);
output.close();
} catch (IOException e) {
e.printStackTrace();
log.error("出现异常:" + e);
}
}
......
......@@ -45,10 +45,10 @@ public class WebDriverUtil {
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.BROWSER, Level.ALL);
options.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
options.addArguments("headless");
options.addArguments("disable-gpu");
options.addArguments("no-sandbox");
return new ChromeDriver(options);
options.addArguments("--headless");
options.addArguments("--disable-gpu");
options.addArguments("--no-sandbox");
return new ChromeDriver();
} else if (Objects.equals(browser.toLowerCase(), Browser.IE)) {
System.setProperty("webdriver.ie.driver", WebDriverUtil.IE + end);
return new InternetExplorerDriver();
......
package com.zjty.autotest.websocket;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
......@@ -16,38 +14,47 @@ import java.util.concurrent.ConcurrentHashMap;
@Component
@Slf4j
public class WebSocketServer {
/**静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。*/
/**
* 静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
*/
private static int onlineCount = 0;
/**concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。*/
private static ConcurrentHashMap<String,WebSocketServer> webSocketMap = new ConcurrentHashMap<>();
/**与某个客户端的连接会话,需要通过它来给客户端发送数据*/
/**
* concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。
*/
private static ConcurrentHashMap<String, WebSocketServer> webSocketMap = new ConcurrentHashMap<>();
/**
* 与某个客户端的连接会话,需要通过它来给客户端发送数据
*/
private Session session;
/**接收userId*/
private String userId="";
/**
* 接收userId
*/
private String userId = "";
/**
* 连接建立成功调用的方法*/
* 连接建立成功调用的方法
*/
@OnOpen
public void onOpen(Session session,@PathParam("userId") String userId) {
public void onOpen(Session session, @PathParam("userId") String userId) {
this.session = session;
this.userId=userId;
if(webSocketMap.containsKey(userId)){
this.userId = userId;
if (webSocketMap.containsKey(userId)) {
webSocketMap.remove(userId);
webSocketMap.put(userId,this);
webSocketMap.put(userId, this);
//加入set中
}else{
webSocketMap.put(userId,this);
} else {
webSocketMap.put(userId, this);
//加入set中
addOnlineCount();
//在线数加1
}
log.info("用户连接:"+userId+",当前在线人数为:" + getOnlineCount());
log.info("用户连接:" + userId + ",当前在线人数为:" + getOnlineCount());
try {
sendMessage("连接成功");
} catch (IOException e) {
log.error("用户:"+userId+",网络异常!!!!!!");
log.error("用户:" + userId + ",网络异常!!!!!!");
}
}
......@@ -56,21 +63,22 @@ public class WebSocketServer {
*/
@OnClose
public void onClose() {
if(webSocketMap.containsKey(userId)){
if (webSocketMap.containsKey(userId)) {
webSocketMap.remove(userId);
//从set中删除
subOnlineCount();
}
log.info("用户退出:"+userId+",当前在线人数为:" + getOnlineCount());
log.info("用户退出:" + userId + ",当前在线人数为:" + getOnlineCount());
}
/**
* 收到客户端消息后调用的方法
*
* @param message 客户端发送过来的消息*/
* @param message 客户端发送过来的消息
*/
@OnMessage
public void onMessage(String message, Session session) {
log.info("用户消息:"+userId+",报文:"+message);
log.info("用户消息:" + userId + ",报文:" + message);
//可以群发消息
//消息保存到数据库、redis
/*if(StringUtils.isNotBlank(message)){
......@@ -94,15 +102,15 @@ public class WebSocketServer {
}
/**
*
* @param session
* @param error
*/
@OnError
public void onError(Session session, Throwable error) {
log.error("用户错误:"+this.userId+",原因:"+error.getMessage());
log.error("用户错误:" + this.userId + ",原因:" + error.getMessage());
error.printStackTrace();
}
/**
* 实现服务器主动推送
*/
......@@ -113,13 +121,13 @@ public class WebSocketServer {
/**
* 发送自定义消息
* */
public static void sendInfo(String message,@PathParam("userId") String userId) throws IOException {
log.info("发送消息到:"+userId+",报文:"+message);
if(StringUtils.isNotBlank(userId)&&webSocketMap.containsKey(userId)){
*/
public static void sendInfo(String message, @PathParam("userId") String userId) throws IOException {
log.info("发送消息到:" + userId + ",报文:" + message);
if (StringUtils.isNotBlank(userId) && webSocketMap.containsKey(userId)) {
webSocketMap.get(userId).sendMessage(message);
}else{
log.error("用户"+userId+",不在线!");
} else {
log.error("用户" + userId + ",不在线!");
}
}
......
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=favicon.ico><title>adapter</title><link href=static/css/serviceConfig.c2069076.css rel=prefetch><link href=static/js/serviceConfig.f214e3f3.js rel=prefetch><link href=static/css/app.f596fcc9.css rel=preload as=style><link href=static/css/chunk-vendors.717c90ab.css rel=preload as=style><link href=static/js/app.4f323ca6.js rel=preload as=script><link href=static/js/chunk-vendors.5f648e7a.js rel=preload as=script><link href=static/css/chunk-vendors.717c90ab.css rel=stylesheet><link href=static/css/app.f596fcc9.css rel=stylesheet></head><body><noscript><strong>We're sorry but adapter doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=static/js/chunk-vendors.5f648e7a.js></script><script src=static/js/app.4f323ca6.js></script></body></html>
\ No newline at end of file
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=favicon.ico><title>assessment</title><link href=static/css/serviceConfig.531b50e8.css rel=prefetch><link href=static/js/serviceConfig.3e073988.js rel=prefetch><link href=static/css/app.c9629174.css rel=preload as=style><link href=static/css/chunk-vendors.0ffa3bea.css rel=preload as=style><link href=static/js/app.098bb86b.js rel=preload as=script><link href=static/js/chunk-vendors.99d377c1.js rel=preload as=script><link href=static/css/chunk-vendors.0ffa3bea.css rel=stylesheet><link href=static/css/app.c9629174.css rel=stylesheet></head><body><noscript><strong>We're sorry but adapter doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=static/js/chunk-vendors.99d377c1.js></script><script src=static/js/app.098bb86b.js></script></body></html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
.horLine[data-v-065e24b9]{width:86vh;height:6px;background:rgba(72,170,253,.1)}.middleConfig[data-v-065e24b9]{height:100%;text-align:left;background-color:rgba(3,110,183,.1)}.middleConfig-left[data-v-065e24b9]{border-right:6px solid rgba(72,170,253,.1);height:74vh}.middleConfig-left>ul[data-v-065e24b9]{padding:20px 20px 0 20px}.middleConfig-left>ul>li[data-v-065e24b9]{margin:0 0 20px 0;border-bottom:4px solid rgba(72,170,253,.1)}.middleConfig-left>ul>li>i[data-v-065e24b9]{display:inline-block;width:5px;height:5px;border-radius:50%;background:#999;margin:3px 5px 3px 0}.middleLi[data-v-065e24b9]:hover{color:#59f9f7;border-bottom:4px solid #59f9f7}.middleLi[data-v-065e24b9]{color:#fff;border-bottom:4px solid rgba(72,170,253,.1)}.middleActive[data-v-065e24b9]{color:#59f9f7!important;border-bottom:4px solid #59f9f7!important}.cancel[data-v-065e24b9]{display:inline-block;width:15px;height:15px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAACXBIWXMAAAsSAAALEgHS3X78AAAAtElEQVQoz6WTsQ3CMBBFn691403ICKwBUki8WCBuWIMRoGGOFKE+GgeFYOwgTnJz0nu++5bN2NUOuABX60PLinocDyfAyazXxOYasAEGsT4MwBa4lQQzsLc+tAKwRrAEAV5j5wQpEMCo6vKGKcAN0E95LMEknBCQAt/Gnldc4V5KXjKp7oBzLkQppLq3PlRx9w+BlJ4jrtGmBFICcwKjqkXw23Tmj49RoaqMXe1UlV/O2NXuCaHNppoc5cnEAAAAAElFTkSuQmCC) no-repeat;position:relative;left:220px}.middleConfig-left>p[data-v-065e24b9]{position:absolute;bottom:20px;height:60px;border-top:6px solid rgba(72,170,253,.1);width:28%}.middleConfig-left>p>span[data-v-065e24b9]{display:inline-block;margin:0 auto;width:110px;height:33px;font-size:16px;color:#fff;text-align:center;line-height:33px;background:url(data:image/png;base64,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) no-repeat;margin:20px}.middleConfig-left>p>span[data-v-065e24b9]:hover{background:url(data:image/png;base64,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) no-repeat}.middleConfig-right[data-v-065e24b9]{margin:10px 20px}.middleConfig-right>div[data-v-065e24b9]{background-color:rgba(1,13,25,.5)}.middleConfig-right>div>ul[data-v-065e24b9]{padding:0 20px}.middleConfig-right>p[data-v-065e24b9]{font-size:18px;color:#59f9f7}.middleConfig-right>p>i[data-v-065e24b9]{display:inline-block;width:5px;height:5px;background:#59f9f7;margin:4px 3px}.right-base[data-v-065e24b9]{width:100%;height:126px;font-size:16px;color:#fff}.right-base>span[data-v-065e24b9]{display:inline-block;margin:22px 70px}.right-base>span>p[data-v-065e24b9]{padding:9px 0}.right-base>span>p>span[data-v-065e24b9]{color:#59f9f7}.right-system[data-v-065e24b9]{margin-left:60px;position:relative;top:-47px}.right-system>img[data-v-065e24b9]{float:right;margin:-30px 10px 48px 0}.middleConfig-right>div>ul>li[data-v-065e24b9]{height:74px;border-bottom:6px solid rgba(72,170,253,.1)}.middleConfig-right>div>ul>li[data-v-065e24b9]:hover{border-bottom:6px solid #59f9f7}.right-system>p[data-v-065e24b9]{color:#999;font-size:14px}.right-system>p>span[data-v-065e24b9]{color:#59f9f7}
\ No newline at end of file
.serveHt[data-v-58745026]{background:rgba(72,170,253,.1);height:86vh}.serveHt .pageing[data-v-58745026]{position:absolute;right:50px;bottom:100px}.serveHt[data-v-58745026] .el-form-item__content{width:280px}.serveHt[data-v-58745026] .el-form-item.test .el-form-item__content{width:600px}.serveHt[data-v-58745026] .el-input--suffix .el-input__inner{padding-right:90px}.serveHt[data-v-58745026] .el-card{width:70%;padding:0;border-radius:0;background-color:transparent}.serveHt[data-v-58745026] .el-card__body{padding:0;background-color:transparent;height:650px}.serveHt[data-v-58745026] .el-card__body .el-select{float:left;margin-top:20px}.serveHt[data-v-58745026] .el-table{width:290px;float:left}.serveHt .chorme[data-v-58745026]{float:left;display:block;text-align:left;width:100%;margin-top:20px;margin-left:15px;color:#fff}.serveHt[data-v-58745026] .el-menu{background-color:transparent}.serveHt[data-v-58745026] .el-dialog__footer{position:absolute;right:30px;bottom:30px}.serveHt[data-v-58745026] .el-menu-item{background-color:transparent}.serveHt[data-v-58745026] .el-menu-item.is-active{color:#fff;background-color:transparent}.el-menu--horizontal>.el-menu-item[data-v-58745026]:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title[data-v-58745026]:hover,.serveHt[data-v-58745026] .el-menu--horizontal>.el-menu-item:not(.is-disabled):focus{background-color:transparent}.serveHt[data-v-58745026] .el-table__body-wrapper::-webkit-scrollbar{height:6px}.serveHt[data-v-58745026] .el-table__body-wrapper::-webkit-scrollbar-thumb{background-color:rgba(13,121,194,.753);border-radius:3px}.serveHt[data-v-58745026] .serve-button{position:absolute;bottom:150px;left:50%}.serveHt[data-v-58745026] .el-icon-close:before{display:none}.serveHt[data-v-58745026] .dialog-footer{margin-bottom:20px}@media screen and (min-width:1366px){.serveHt[data-v-58745026] .el-card{width:70%;padding:0;border-radius:0;background-color:transparent}.serveHt[data-v-58745026] .serve-button{position:absolute;bottom:50px;left:50%}.serveHt[data-v-58745026] .is-scrolling-none{height:100px}}
\ No newline at end of file
.serveHt[data-v-5dab1019]{background:rgba(72,170,253,.1);height:86vh}.serveHt .button-img[data-v-5dab1019]{width:30px;height:30px;cursor:pointer}.serveHt .button-img.del[data-v-5dab1019]{float:right}.serveHt .button-img.detail[data-v-5dab1019]{width:35px;height:35px}.serveHt .pageing[data-v-5dab1019]{position:absolute;right:50px;bottom:100px}.serveHt[data-v-5dab1019] .el-form-item__content{width:280px}.serveHt[data-v-5dab1019] .el-form-item.test .el-form-item__content{width:600px}.serveHt[data-v-5dab1019] .el-input--suffix .el-input__inner{padding-right:90px}.serveHt[data-v-5dab1019] .case-table{float:right;width:20%}.serveHt[data-v-5dab1019] .el-card{width:65%;border:none;padding:0;float:left;border-radius:0;background-color:transparent}.serveHt[data-v-5dab1019] .el-card__body{padding:0;background-color:transparent;height:650px}.serveHt[data-v-5dab1019] .btn-next,.serveHt[data-v-5dab1019] .btn-prev,.serveHt[data-v-5dab1019] .el-pagination.is-background .el-pager li{background-color:transparent}.serveHt[data-v-5dab1019] .edit-txt span{color:#fff;margin-right:15px;line-height:30px}.serveHt[data-v-5dab1019] .edit-txt{float:left;margin-left:20px;margin-top:10px;cursor:pointer}.serveHt[data-v-5dab1019] .el-button.downtest{display:block;margin-bottom:10px;margin-left:10px}.serveHt[data-v-5dab1019] .el-card__body .el-select{float:left;margin-top:20px}.serveHt[data-v-5dab1019] .el-table{width:290px;float:left}.serveHt .chorme[data-v-5dab1019]{float:left;display:block;text-align:left;width:100%;margin-top:20px;margin-left:15px;color:#fff}.serveHt[data-v-5dab1019] .el-menu{background-color:transparent}.serveHt[data-v-5dab1019] .el-dialog__footer{position:absolute;right:30px;bottom:30px}.serveHt[data-v-5dab1019] .el-menu-item{background-color:transparent}.serveHt[data-v-5dab1019] .el-menu-item.is-active{color:#fff;background-color:transparent}.el-menu--horizontal>.el-menu-item[data-v-5dab1019]:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title[data-v-5dab1019]:hover,.serveHt[data-v-5dab1019] .el-menu--horizontal>.el-menu-item:not(.is-disabled):focus{background-color:transparent}.serveHt[data-v-5dab1019] .el-table__body-wrapper::-webkit-scrollbar{height:6px}.serveHt[data-v-5dab1019] .el-table__body-wrapper::-webkit-scrollbar-thumb{background-color:rgba(13,121,194,.753);border-radius:3px}.serveHt[data-v-5dab1019] .serve-button{position:absolute;bottom:150px;left:50%;margin-left:-20px}.serveHt[data-v-5dab1019] .el-icon-close:before{display:none}.serveHt[data-v-5dab1019] .dialog-footer{margin-bottom:20px}@media screen and (min-width:1200px) and (max-width:1600px){.serveHt .pageing[data-v-5dab1019]{position:absolute;right:50px;bottom:40px}.serveHt[data-v-5dab1019] .el-card{width:55%;padding:0;float:left;border-radius:0;background-color:transparent}.serveHt[data-v-5dab1019] .serve-button{position:absolute;bottom:80px;left:50%;margin-left:-20px}.serveHt[data-v-5dab1019] .is-scrolling-none{height:100px}.serveHt[data-v-5dab1019] .case-table{float:right;width:290px}}
\ No newline at end of file
.serveHt[data-v-0e820d66]{background:rgba(72,170,253,.1);height:86vh}.serveHt .pageing[data-v-0e820d66]{position:absolute;right:50px;bottom:100px}.serveHt[data-v-0e820d66] .el-form-item__content{width:280px}.serveHt[data-v-0e820d66] .el-form-item.test .el-form-item__content{width:600px}.serveHt[data-v-0e820d66] .el-input--suffix .el-input__inner{padding-right:90px}.serveHt[data-v-0e820d66] .el-card{width:70%;padding:0;border-radius:0;background-color:transparent}.serveHt[data-v-0e820d66] .el-card__body{padding:0;background-color:transparent;height:650px}.serveHt[data-v-0e820d66] .el-card__body .el-select{float:left;margin-top:20px}.serveHt[data-v-0e820d66] .el-table{width:290px;float:left}.serveHt .chorme[data-v-0e820d66]{float:left;display:block;text-align:left;width:100%;margin-top:20px;margin-left:15px;color:#fff}.serveHt[data-v-0e820d66] .el-menu{background-color:transparent}.serveHt[data-v-0e820d66] .el-dialog__footer{position:absolute;right:30px;bottom:30px}.serveHt[data-v-0e820d66] .el-menu-item{background-color:transparent}.serveHt[data-v-0e820d66] .el-menu-item.is-active{color:#fff;background-color:transparent}.el-menu--horizontal>.el-menu-item[data-v-0e820d66]:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title[data-v-0e820d66]:hover,.serveHt[data-v-0e820d66] .el-menu--horizontal>.el-menu-item:not(.is-disabled):focus{background-color:transparent}.serveHt[data-v-0e820d66] .el-table__body-wrapper::-webkit-scrollbar{height:6px}.serveHt[data-v-0e820d66] .el-table__body-wrapper::-webkit-scrollbar-thumb{background-color:rgba(13,121,194,.753);border-radius:3px}.serveHt[data-v-0e820d66] .serve-button{position:absolute;bottom:150px;left:50%}.serveHt[data-v-0e820d66] .el-icon-close:before{display:none}@media screen and (min-width:1366px){.serveHt[data-v-0e820d66] .el-card{width:70%;padding:0;border-radius:0;background-color:transparent}.serveHt[data-v-0e820d66] .serve-button{position:absolute;bottom:50px;left:50%}.serveHt[data-v-0e820d66] .is-scrolling-none{height:100px}}
\ No newline at end of file
.serveHt[data-v-5d0bbc7c]{background:rgba(72,170,253,.1);height:86vh}.serveHt .button-img[data-v-5d0bbc7c]{width:30px;height:30px;cursor:pointer}.serveHt .button-img.del[data-v-5d0bbc7c]{float:right}.serveHt .button-img.detail[data-v-5d0bbc7c]{width:35px;height:35px}.serveHt .pageing[data-v-5d0bbc7c]{position:absolute;right:50px;bottom:100px}.serveHt[data-v-5d0bbc7c] .el-form-item__content{width:280px}.serveHt[data-v-5d0bbc7c] .el-form-item.test .el-form-item__content{width:600px}.serveHt[data-v-5d0bbc7c] .el-input--suffix .el-input__inner{padding-right:90px}.serveHt[data-v-5d0bbc7c] .case-table{float:right;width:20%}.serveHt[data-v-5d0bbc7c] .el-card{width:65%;border:none;padding:0;float:left;border-radius:0;background-color:transparent}.serveHt[data-v-5d0bbc7c] .el-card__body{padding:0;background-color:transparent;height:650px}.serveHt[data-v-5d0bbc7c] .btn-next,.serveHt[data-v-5d0bbc7c] .btn-prev,.serveHt[data-v-5d0bbc7c] .el-pagination.is-background .el-pager li{background-color:transparent}.serveHt[data-v-5d0bbc7c] .edit-txt span{color:#fff;margin-right:15px;line-height:30px}.serveHt[data-v-5d0bbc7c] .edit-txt{float:left;margin-left:20px;margin-top:10px;cursor:pointer}.serveHt[data-v-5d0bbc7c] .el-button.downtest{display:block;margin-bottom:10px;margin-left:10px}.serveHt[data-v-5d0bbc7c] .el-card__body .el-select{float:left;margin-top:20px}.serveHt[data-v-5d0bbc7c] .el-table{width:290px;float:left}.serveHt .chorme[data-v-5d0bbc7c]{float:left;display:block;text-align:left;width:100%;margin-top:20px;margin-left:15px;color:#fff}.serveHt[data-v-5d0bbc7c] .el-menu{background-color:transparent}.serveHt[data-v-5d0bbc7c] .el-dialog__footer{position:absolute;right:30px;bottom:30px}.serveHt[data-v-5d0bbc7c] .el-menu-item{background-color:transparent}.serveHt[data-v-5d0bbc7c] .el-menu-item.is-active{color:#fff;background-color:transparent}.el-menu--horizontal>.el-menu-item[data-v-5d0bbc7c]:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title[data-v-5d0bbc7c]:hover,.serveHt[data-v-5d0bbc7c] .el-menu--horizontal>.el-menu-item:not(.is-disabled):focus{background-color:transparent}.serveHt[data-v-5d0bbc7c] .el-table__body-wrapper::-webkit-scrollbar{height:6px}.serveHt[data-v-5d0bbc7c] .el-table__body-wrapper::-webkit-scrollbar-thumb{background-color:rgba(13,121,194,.753);border-radius:3px}.serveHt[data-v-5d0bbc7c] .serve-button{position:absolute;bottom:150px;left:50%;margin-left:-20px}.serveHt[data-v-5d0bbc7c] .el-icon-close:before{display:none}.serveHt[data-v-5d0bbc7c] .dialog-footer{margin-bottom:20px}@media screen and (min-width:1200px) and (max-width:1600px){.serveHt .pageing[data-v-5d0bbc7c]{position:absolute;right:50px;bottom:40px}.serveHt[data-v-5d0bbc7c] .el-card{width:55%;padding:0;float:left;border-radius:0;background-color:transparent}.serveHt[data-v-5d0bbc7c] .serve-button{position:absolute;bottom:80px;left:50%;margin-left:-20px}.serveHt[data-v-5d0bbc7c] .is-scrolling-none{height:100px}.serveHt[data-v-5d0bbc7c] .case-table{float:right;width:290px}}
\ No newline at end of file
差异被折叠。
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论