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

Merge branch 'master' of git.yfzx.zjtys.com.cn:hct/auto-test

......@@ -7,7 +7,6 @@ import com.google.common.collect.Sets;
import com.zjty.autotest.pojo.report.ElementDetail;
import com.zjty.autotest.pojo.report.Measure;
import com.zjty.autotest.pojo.report.Report;
import com.zjty.autotest.pojo.test.ElementMapping;
import com.zjty.autotest.pojo.test.Input;
import com.zjty.autotest.pojo.test.Project;
import com.zjty.autotest.util.FileUtil;
......@@ -25,7 +24,6 @@ import org.springframework.stereotype.Service;
import java.time.Duration;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.Predicate;
import java.util.stream.Collectors;
......@@ -63,8 +61,6 @@ public class SeleniumExecutor {
private Queue<String> urlQueue = Queues.newLinkedBlockingDeque();
private List<ElementMapping> elementMappings = Lists.newArrayList();
/**
* 当前进行的窗口页
*/
......@@ -82,7 +78,6 @@ public class SeleniumExecutor {
public Report execute(Project project) {
driver = WebDriverUtil.getWebDriver(project.getBrowser());
driver.manage().timeouts().pageLoadTimeout(2L, TimeUnit.SECONDS);
inputs = project.getInputs();
List<Measure> measures = Lists.newArrayList();
String os = "";
......@@ -127,7 +122,6 @@ public class SeleniumExecutor {
//获取当前网页的所有元素并放入元素队列
Map<Attributes, WebElement> elements = getAllElements(driver);
log.info("获取完毕...共{}个元素...", elements.size());
elements.forEach((attributes, element) -> System.out.println(attributes));
//元素序号重置
currentHistoryAttributes.clear();
//开始遍历操作元素队列中的元素 返回各个元素测试信息
......@@ -147,6 +141,10 @@ public class SeleniumExecutor {
elementDetails.forEach(elementDetail -> messages.add(elementDetail.getMessage()));
StringBuilder message = new StringBuilder();
messages.forEach(message::append);
for (String msg : messages) {
message.append(msg);
message.append(';');
}
log.info("遍历完毕...");
measure = new Measure(
currentUrl,
......@@ -187,52 +185,26 @@ public class SeleniumExecutor {
Map<Attributes, WebElement> reload = reload();
traversal(reload, elementDetails);
}
// if (sourceChanged) {
// Map<Attributes, WebElement> reload = reload();
// traversal(reload, elementDetails);
// }
elementDetails.add(elementDetail);
}
}
// while (elementIndex < this.elements.size()) {
// WebElement element = this.elements.get(elementIndex);
// ElementDetail elementDetail = actClick(element,);
// elementIndex++;
// boolean urlChanged = checkURl();
// boolean sourceChanged = checkSource();
// if (urlChanged) {
// boolean newPage = !historyUrls.contains(driver.getCurrentUrl())
// && !Sets.newHashSet(urlQueue).contains(driver.getCurrentUrl())
// && sourceChanged;
// if (newPage) {
// log.info("检测到新url:{} 加入队列 ", driver.getCurrentUrl());
// urlQueue.add(driver.getCurrentUrl());
// urlQueue = queueDuplicateRemoval(urlQueue);
// }
// reload();
// }
// if (sourceChanged) {
// reload();
// }
// elementDetails.add(elementDetail);
// }
}
private ElementDetail actInput(Attributes attributes, WebElement element) {
String type = element.getTagName();
String message = null;
Long responseTIme = -1L;
String type = String.format("<%s>%s", element.getTagName(), element.getText());
String message = "";
Long responseTime = -1L;
boolean success = false;
try {
if (isEnabled(element)) {
log.info("Input元素 ------ text:[{}] ----- tag:[{}] ---- attrs:[{}]", element.getText(), element.getTagName(), attributes);
log.info("Input元素 ----- tag:[{}] ------ text:[{}] ---- attrs:[{}]", element.getTagName(), element.getText(), attributes);
long startTime = System.currentTimeMillis();
if (!inputs.isEmpty()) {
Input input = inputs.remove(0);
element.sendKeys(input.getValue());
}
long endTime = System.currentTimeMillis();
Long responseTime = endTime - startTime;
responseTime = endTime - startTime;
success = true;
Alert alert = ExpectedConditions.alertIsPresent().apply(driver);
if (nonNull(alert)) {
......@@ -242,11 +214,15 @@ public class SeleniumExecutor {
}
}
} catch (ElementNotInteractableException e) {
message = "异常的布局;";
message = "异常的布局";
success = false;
log.error("error:存在可操作范围之外的元素");
} catch (TimeoutException e) {
message = "页面超时";
success = false;
log.error("error:存在可操作范围之外的元素");
} catch (Exception e) {
message = "预料之外的异常:" + e.getMessage() + ";";
message = "出现预料之外的异常";
success = false;
log.error("error:" + e);
}
......@@ -254,20 +230,20 @@ public class SeleniumExecutor {
currentHistoryAttributes.add(attributes);
return new ElementDetail(
type,
responseTIme.intValue(),
responseTime.intValue(),
success,
message
);
}
private ElementDetail actClick(Attributes attributes, WebElement element) {
String type = element.getTagName();
String message = null;
String type = String.format("<%s>%s", element.getTagName(), element.getText());
String message = "";
Long responseTIme = 0L;
boolean success = false;
try {
if (isEnabled(element)) {
log.info("Click 元素 ------ text:[{}] ----- tag:[{}] ---- attrs:[{}]", element.getText(), element.getTagName(), attributes);
log.info("Input元素 ----- tag:[{}] ------ text:[{}] ---- attrs:[{}]", element.getTagName(), element.getText(), attributes);
element.click();
sleep();
success = true;
......@@ -279,11 +255,15 @@ public class SeleniumExecutor {
}
}
} catch (ElementNotInteractableException e) {
message = "异常的布局;";
message = "异常的布局";
success = false;
log.error("error:存在可操作范围之外的元素");
} catch (TimeoutException e) {
message = "页面超时";
success = false;
log.error("error:存在可操作范围之外的元素");
} catch (Exception e) {
message = "预料之外的异常:" + e.getMessage() + ";";
message = "出现预料之外的异常";
success = false;
log.error("error:" + e);
}
......@@ -344,14 +324,13 @@ public class SeleniumExecutor {
@SuppressWarnings("unused")
private void sleep() {
try {
Sleeper.SYSTEM_SLEEPER.sleep(Duration.ofSeconds(2L));
Sleeper.SYSTEM_SLEEPER.sleep(Duration.ofSeconds(waitTime));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private Map<Attributes, WebElement> getAllElements(WebDriver driver) {
elementMappings.clear();
List<WebElement> webElements = Lists.newArrayList();
driver.findElements(By.xpath("*"))
.forEach(element -> getSubElements(element, webElements));
......@@ -390,7 +369,7 @@ public class SeleniumExecutor {
private Boolean isClickAble(WebElement element) {
try {
return nonNull(ExpectedConditions.elementToBeClickable(element).apply(driver));
} catch (Exception e){
} catch (Exception e) {
return false;
}
}
......@@ -398,7 +377,7 @@ public class SeleniumExecutor {
private Boolean isEnabled(WebElement element) {
try {
return nonNull(ExpectedConditions.elementToBeClickable(element).apply(driver));
} catch (Exception e){
} catch (Exception e) {
return false;
}
}
......@@ -452,11 +431,4 @@ public class SeleniumExecutor {
return result;
}
private void removeHistoryElements() {
elementMappings.forEach((elementMapping) -> {
if (historyAttributes.contains(elementMapping.getAttributes())) {
elementMappings.remove(elementMapping);
}
});
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论