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