提交 7a6cd089 authored 作者: 孙洁清's avatar 孙洁清

Merge remote-tracking branch 'origin/master'

# Conflicts: # src/main/java/com/zjty/autotest/config/ProjectInitRun.java # src/main/java/com/zjty/autotest/dao/AutoResultSetDao.java # src/main/java/com/zjty/autotest/service/impl/AsyncServiceImpl.java # src/main/java/com/zjty/autotest/service/impl/AutoResultSetServiceImpl.java
......@@ -42,6 +42,7 @@ public class AutoResultSetController {
public ResponseResult delete(@PathVariable String id ){
return autoResultSetService.deleteByid(id);
}
@ApiOperation("新增")
@RequestMapping(method=RequestMethod.POST)
public ResponseResult add(@RequestBody TestChannel testChannel ){
......
......@@ -17,7 +17,7 @@ public class ResourceController {
return "index.html";
}
@RequestMapping("/pic/{name}")
@RequestMapping("/screenshot/{name}")
public String picture(@PathVariable String name){
return name + ".png";
}
......
......@@ -5,6 +5,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
/**
* 数据访问接口
......@@ -13,12 +14,12 @@ import org.springframework.data.jpa.repository.Query;
*/
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(String resultId);
String findByInResultId(@Param("resultId") String resultId);
@Query(value = "select out_report from test_report where result_id =:resultId",nativeQuery = true)
String findByOutResultId(String resultId);
String findByOutResultId(@Param("resultId") String resultId);
@Query(value = "select * from test_report where result_id=:resultId",nativeQuery = true)
TestReport findByResultId(String resultId);
TestReport findByResultId(@Param("resultId") String resultId);
@Modifying
int deleteByResultId(String resultId);
int deleteByResultId(@Param("resultId") String resultId);
}
......@@ -2,6 +2,7 @@ package com.zjty.autotest.mq;
import com.alibaba.fastjson.JSON;
import com.zjty.autotest.pojo.sjq.*;
import com.zjty.autotest.service.AsyncService;
import com.zjty.autotest.service.AutoResultSetService;
import com.zjty.autotest.service.TestReportService;
import com.zjty.autotest.util.TimeUtil;
......@@ -17,13 +18,7 @@ import java.util.List;
@Component
public class PushBlockQueueHandler implements Runnable {
@Autowired
private TestReportService testReportService;
@Autowired
private AutoResultSetService autoResultSetService;
@PostConstruct
public void init(){
new Thread(this).start();
}
private AsyncService asyncService;
//消费的对象
private Object obj;
......@@ -37,12 +32,12 @@ public class PushBlockQueueHandler implements Runnable {
//消费线程
@Override
public void run() {
doBusiness();
// doBusiness();
}
//消费行为
private void doBusiness() {
String id = (String) obj;
/* String id = (String) obj;
System.out.println("id:" + id);
TestChannel testChannel = (TestChannel) CacheManager.getCache(id);
if (testChannel != null) {
......@@ -123,7 +118,7 @@ public class PushBlockQueueHandler implements Runnable {
e.printStackTrace();
}
}
}*/
System.out.println(Thread.currentThread().getName() + "-收到消息:" + obj);
}
}
......@@ -16,6 +16,7 @@ import org.openqa.selenium.support.ui.WebDriverWait;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.Predicate;
import static com.zjty.autotest.common.action.LabelType.*;
......@@ -58,6 +59,7 @@ public class SeleniumExecutor {
public Report execute(Project project) {
driver = WebDriverUtil.getWebDriver(project.getBrowser());
driver.manage().timeouts().implicitlyWait(10L, TimeUnit.SECONDS);
inputs = project.getInputs();
List<Measure> measures = Lists.newArrayList();
String os = "";
......@@ -108,8 +110,9 @@ public class SeleniumExecutor {
//如果出错 则提供截图
String screenshot = "";
if (!success) {
screenShot(currentUrl);
screenshot = "http://localhost:13500/screenshots/" + currentUrl;
String screenshotName = alterUrlName(currentUrl);
screenshot(screenshotName);
screenshot = String.format("http://localhost:13500/screenshots/%s", screenshotName);
}
log.info("遍历完毕...");
measure = new Measure(
......@@ -124,15 +127,12 @@ public class SeleniumExecutor {
}
private String traversal() {
String message = null;
StringBuilder message = new StringBuilder();
while (elementIndex < elements.size()) {
WebElement element = elements.get(elementIndex);
message = act(element);
if (nonNull(message)) {
break;
}
message.append(act(element));
}
return message;
return message.toString();
}
private String act(WebElement element) {
......@@ -162,15 +162,21 @@ public class SeleniumExecutor {
} catch (ElementNotInteractableException e) {
message = "异常的布局;";
log.error("error:在可操作范围之外的元素");
} catch (TimeoutException e) {
message = "第" + (elementIndex + 1) + "个元素操作超时;";
log.error("error:操作超时");
} catch (Exception e) {
message = "预料之外的异常:" + e.getMessage() + ";";
log.error("error:" + e.getMessage());
log.error("error:" + e);
}
return message;
}
private Boolean checkPage() {
boolean pageChange = !Objects.equals(currentUrl, driver.getCurrentUrl());
boolean pageChange = !Objects.equals(
getMainUrl(currentUrl),
getMainUrl(driver.getCurrentUrl())
);
if (pageChange) {
boolean newPage = !historyUrls.contains(driver.getCurrentUrl());
if (newPage) {
......@@ -183,6 +189,10 @@ public class SeleniumExecutor {
}
}
private String getMainUrl(String url) {
return url.substring(0, url.indexOf(url));
}
private void inputValue(WebElement element, List<Input> inputs) {
Predicate<Input> inputMatch = input -> Objects.equals(element.getAttribute(input.getAttrName()), input.getAttrValue());
Optional<Input> inputOptional = inputs.stream().filter(inputMatch).findAny();
......@@ -251,7 +261,19 @@ public class SeleniumExecutor {
}
private void screenShot(String name) {
private String alterUrlName(String fileName) {
// /\?*:"<>|
return fileName.replace("/", "")
.replace("\\", "")
.replace("?", "")
.replace("*", "")
.replace(":", "")
.replace("<", "")
.replace(">", "")
.replace("|", "");
}
private void screenshot(String name) {
byte[] bytes = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
FileUtil.output(bytes, FileUtil.WORK_PATH + "screenshots\\" + name + ".png");
}
......
package com.zjty.autotest.service.impl;
import java.beans.Transient;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
......@@ -63,11 +64,12 @@ public class TestReportServiceImpl implements TestReportService {
* 增加
* @param testReport
*/
@Transient
public void add(TestReport testReport) {
testReport.setId( idWorker.nextId()+"" );
testReportDao.save(testReport);
}
@Transient
/**
* 修改
* @param testReport
......@@ -80,11 +82,12 @@ public class TestReportServiceImpl implements TestReportService {
* 删除
* @param resultId
*/
@Transient
public ResponseResult deleteByResultId(String resultId) {
int i = testReportDao.deleteByResultId(resultId);
return ResponseResult.okResult(i);
}
@Transient
@Override
public ResponseResult save(TestReport testReport) {
System.out.println(testReport);
......@@ -98,7 +101,7 @@ public class TestReportServiceImpl implements TestReportService {
}
return ResponseResult.errorResult(AppHttpCodeEnum.ERROR);
}
@Transient
@Override
public ResponseResult addInReport(String id, String inReport) {
TestReport testReport=new TestReport();
......
......@@ -40,7 +40,6 @@ class AutotestApplicationTests {
caps.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
WebDriver driver = new ChromeDriver();
String url = "file:///C:/MyProjects/auto-test/wps/index.html";
long startTime = System.currentTimeMillis();
driver.get(url);
Project project = new Project(
null,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论