提交 89b48347 authored 作者: 黄承天's avatar 黄承天

[feature]

增加按键操作 简化异常信息
上级 59ac5428
...@@ -12,6 +12,8 @@ public interface CommandType { ...@@ -12,6 +12,8 @@ public interface CommandType {
String TYPE = "type"; String TYPE = "type";
String SEND_KEYS = "sendKeys";
String MOUSE_OVER = "mouseOver"; String MOUSE_OVER = "mouseOver";
String SET_WINDOW_SIZE = "setWindowSize"; String SET_WINDOW_SIZE = "setWindowSize";
......
...@@ -34,7 +34,7 @@ import static java.util.Objects.nonNull; ...@@ -34,7 +34,7 @@ import static java.util.Objects.nonNull;
/** /**
* @author C * @author C
*/ */
@SuppressWarnings({"SpringAutowiredFieldsWarningInspection", "Duplicates", "SpringJavaAutowiredFieldsWarningInspection", "DuplicateExpressions"}) @SuppressWarnings({"SpringAutowiredFieldsWarningInspection", "Duplicates", "SpringJavaAutowiredFieldsWarningInspection"})
@Slf4j @Slf4j
@Service @Service
public class SeleniumExecutor { public class SeleniumExecutor {
...@@ -239,7 +239,7 @@ public class SeleniumExecutor { ...@@ -239,7 +239,7 @@ public class SeleniumExecutor {
break; break;
case CLICK: case CLICK:
content = format("单击:[%s]", target); content = format("单击:[%s]", target);
waitForELement(target,targets); waitForELement(target, targets);
element = getElement(target, targets); element = getElement(target, targets);
costTime = System.currentTimeMillis() - stepStartTime; costTime = System.currentTimeMillis() - stepStartTime;
if (nonNull(element)) { if (nonNull(element)) {
...@@ -263,7 +263,7 @@ public class SeleniumExecutor { ...@@ -263,7 +263,7 @@ public class SeleniumExecutor {
break; break;
case DOUBLE_CLICK: case DOUBLE_CLICK:
content = format("双击:[%s]", target); content = format("双击:[%s]", target);
waitForELement(target,targets); waitForELement(target, targets);
element = getElement(target, targets); element = getElement(target, targets);
costTime = System.currentTimeMillis() - stepStartTime; costTime = System.currentTimeMillis() - stepStartTime;
if (nonNull(element)) { if (nonNull(element)) {
...@@ -285,7 +285,7 @@ public class SeleniumExecutor { ...@@ -285,7 +285,7 @@ public class SeleniumExecutor {
break; break;
case MOUSE_DOWN: case MOUSE_DOWN:
content = format("长单击:[%s]", target); content = format("长单击:[%s]", target);
waitForELement(target,targets); waitForELement(target, targets);
element = getElement(target, targets); element = getElement(target, targets);
costTime = System.currentTimeMillis() - stepStartTime; costTime = System.currentTimeMillis() - stepStartTime;
if (nonNull(element)) { if (nonNull(element)) {
...@@ -307,7 +307,7 @@ public class SeleniumExecutor { ...@@ -307,7 +307,7 @@ public class SeleniumExecutor {
break; break;
case MOUSE_MOVE: case MOUSE_MOVE:
content = format("鼠标移动至:[%s]", target); content = format("鼠标移动至:[%s]", target);
waitForELement(target,targets); waitForELement(target, targets);
element = getElement(target, targets); element = getElement(target, targets);
costTime = System.currentTimeMillis() - stepStartTime; costTime = System.currentTimeMillis() - stepStartTime;
if (nonNull(element)) { if (nonNull(element)) {
...@@ -328,7 +328,7 @@ public class SeleniumExecutor { ...@@ -328,7 +328,7 @@ public class SeleniumExecutor {
break; break;
case MOUSE_UP: case MOUSE_UP:
content = format("停止长按:[%s]", target); content = format("停止长按:[%s]", target);
waitForELement(target,targets); waitForELement(target, targets);
element = getElement(target, targets); element = getElement(target, targets);
costTime = System.currentTimeMillis() - stepStartTime; costTime = System.currentTimeMillis() - stepStartTime;
if (nonNull(element)) { if (nonNull(element)) {
...@@ -350,7 +350,7 @@ public class SeleniumExecutor { ...@@ -350,7 +350,7 @@ public class SeleniumExecutor {
case SELECT: case SELECT:
String label = seleniumHelper.getValue(value); String label = seleniumHelper.getValue(value);
content = format("下拉框选择:[%s]", label); content = format("下拉框选择:[%s]", label);
waitForELement(target,targets); waitForELement(target, targets);
element = getElement(target, targets); element = getElement(target, targets);
costTime = System.currentTimeMillis() - stepStartTime; costTime = System.currentTimeMillis() - stepStartTime;
if (nonNull(element)) { if (nonNull(element)) {
...@@ -396,6 +396,19 @@ public class SeleniumExecutor { ...@@ -396,6 +396,19 @@ public class SeleniumExecutor {
success = false; success = false;
} }
break; break;
case SEND_KEYS:
content = format("输入按键:[%s]", value);
element = getElement(target, targets);
costTime = System.currentTimeMillis() - stepStartTime;
if (nonNull(element)) {
String key = seleniumHelper.getKeyForSend(value);
element.sendKeys(Keys.valueOf(key));
success = true;
} else {
message = "无法定位该元素";
success = false;
}
break;
case CLOSE: case CLOSE:
content = "关闭窗口"; content = "关闭窗口";
try { try {
...@@ -413,7 +426,7 @@ public class SeleniumExecutor { ...@@ -413,7 +426,7 @@ public class SeleniumExecutor {
} catch (Exception e) { } catch (Exception e) {
log.error(e.getLocalizedMessage()); log.error(e.getLocalizedMessage());
Arrays.stream(e.getStackTrace()).forEach(System.out::println); Arrays.stream(e.getStackTrace()).forEach(System.out::println);
message = e.getLocalizedMessage(); message = format("出现异常:%s",e.getClass().getSimpleName());
success = false; success = false;
} }
stepStartTime = System.currentTimeMillis(); stepStartTime = System.currentTimeMillis();
...@@ -440,16 +453,15 @@ public class SeleniumExecutor { ...@@ -440,16 +453,15 @@ public class SeleniumExecutor {
} }
private void movetoElementView(WebElement element) { private void movetoElementView(WebElement element) {
JavascriptExecutor jse = (JavascriptExecutor) driver; JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("arguments[0].scrollIntoView(true);", element); jse.executeScript("arguments[0].scrollIntoView(true);", element);
} }
private void waitForELement(String target, List<List<String>> targets){ private void waitForELement(String target, List<List<String>> targets) {
try { try {
new WebDriverWait(driver,3).until(webDriver -> nonNull(getElement(target,targets))); new WebDriverWait(driver, 3).until(webDriver -> nonNull(getElement(target, targets)));
} catch (Exception ignored){ } catch (Exception ignored) {
} }
} }
...@@ -468,7 +480,7 @@ public class SeleniumExecutor { ...@@ -468,7 +480,7 @@ public class SeleniumExecutor {
} }
} }
return null; return null;
}else { } else {
return element; return element;
} }
} }
......
...@@ -46,6 +46,10 @@ public class SeleniumHelper { ...@@ -46,6 +46,10 @@ public class SeleniumHelper {
return name_value[1]; return name_value[1];
} }
public String getKeyForSend(String value) {
return value.replace("${KEY_", "").replace("}", "");
}
private Map<String, String> handleMap = new HashMap<>(); private Map<String, String> handleMap = new HashMap<>();
private Set<String> historyHandles = new HashSet<>(); private Set<String> historyHandles = new HashSet<>();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论