提交 76d23059 authored 作者: 黄承天's avatar 黄承天

修正布局错误的判断

上级 d41f36ea
...@@ -197,17 +197,32 @@ public class SeleniumExecutor { ...@@ -197,17 +197,32 @@ public class SeleniumExecutor {
Map<Attributes, WebElement> reload = reload(); Map<Attributes, WebElement> reload = reload();
traversal(reload, elementDetails); traversal(reload, elementDetails);
} }
if (nonNull(elementDetail)) {
elementDetails.add(elementDetail); elementDetails.add(elementDetail);
} }
} }
} }
}
private ElementDetail act(Attributes attributes, WebElement element, String actType) { private ElementDetail act(Attributes attributes, WebElement element, String actType) {
String type = String.format("<%s>%s", element.getTagName(), element.getText()); String type = String.format("<%s>%s", element.getTagName(), element.getText());
String message = null; String message = null;
long responseTime = 0L; long responseTime = -1L;
boolean success = false; boolean success = false;
try { try {
Boolean locationMatch = checkLocation(element);
if (!locationMatch) {
message = "布局错误";
log.error("error:布局错误");
historyAttributes.add(attributes);
currentHistoryAttributes.add(attributes);
return new ElementDetail(
type,
(int) responseTime,
false,
message
);
}
if (isEnabled(element)) { if (isEnabled(element)) {
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
if (Objects.equals(actType, INPUT)) { if (Objects.equals(actType, INPUT)) {
...@@ -225,29 +240,25 @@ public class SeleniumExecutor { ...@@ -225,29 +240,25 @@ public class SeleniumExecutor {
} }
long endTime = System.currentTimeMillis(); long endTime = System.currentTimeMillis();
responseTime = endTime - startTime; responseTime = endTime - startTime;
Alert alert = ExpectedConditions.alertIsPresent().apply(driver); Alert alert = ExpectedConditions.alertIsPresent().apply(driver);
String jsMsg = checkJsError();
if (nonNull(alert)) { if (nonNull(alert)) {
message = "出现警告窗:" + alert.getText(); message = "error:出现警告窗:" + alert.getText();
alert.accept(); alert.accept();
success = false; success = false;
} } else if (nonNull(jsMsg)) {
String jsMsg = checkJsError();
if (nonNull(jsMsg)) {
message = jsMsg; message = jsMsg;
success = false; success = false;
log.error("error:出现js异常:{}", jsMsg); log.error("error:出现js异常:{}", jsMsg);
} }
} }
} catch (ElementNotInteractableException e) { } catch (ElementNotInteractableException e) {
message = "布局错误"; log.error("error:可操作范围之外的元素");
success = false; return null;
log.error("error:存在可操作范围之外的元素");
} catch (TimeoutException e) { } catch (TimeoutException e) {
message = "页面超时"; message = "页面超时";
success = false; success = false;
log.error("error:存在可操作范围之外的元素"); log.error("error:页面超时");
} catch (NoSuchElementException e) { } catch (NoSuchElementException e) {
message = "依赖缺失"; message = "依赖缺失";
success = false; success = false;
...@@ -435,6 +446,19 @@ public class SeleniumExecutor { ...@@ -435,6 +446,19 @@ public class SeleniumExecutor {
return result; return result;
} }
private Boolean checkLocation(WebElement element) {
try {
Dimension size = driver.manage().window().getSize();
Point elementLocation = element.getLocation();
Dimension elementSize = element.getSize();
boolean xMatch = (elementLocation.x) >= 0 && (elementLocation.x + elementSize.width <= size.width);
boolean yMatch = (elementLocation.y) >= 0 && (elementLocation.y + elementSize.width <= size.height);
return xMatch && yMatch;
} catch (Exception e) {
return false;
}
}
@SuppressWarnings("OptionalGetWithoutIsPresent") @SuppressWarnings("OptionalGetWithoutIsPresent")
private String checkJsError() { private String checkJsError() {
try { try {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论