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

优化元素等待机制

上级 1728c1cb
......@@ -240,8 +240,7 @@ public class SeleniumExecutor {
break;
case CLICK:
content = format("单击:[%s]", target);
waitForElement(target, targets);
element = getElement(target, targets);
element = waitForElement(target, targets);
costTime = System.currentTimeMillis() - stepStartTime;
if (nonNull(element)) {
//如果该点击打开了新标签页 则通过对比当前与历史找出新的标签页句柄并存入Map
......@@ -264,8 +263,7 @@ public class SeleniumExecutor {
break;
case DOUBLE_CLICK:
content = format("双击:[%s]", target);
waitForElement(target, targets);
element = getElement(target, targets);
element = waitForElement(target, targets);
costTime = System.currentTimeMillis() - stepStartTime;
if (nonNull(element)) {
//如果该双击打开了新标签页 则通过对比当前与历史找出新的标签页句柄并存入Map
......@@ -286,8 +284,7 @@ public class SeleniumExecutor {
break;
case MOUSE_DOWN:
content = format("长单击:[%s]", target);
waitForElement(target, targets);
element = getElement(target, targets);
element = waitForElement(target, targets);
costTime = System.currentTimeMillis() - stepStartTime;
if (nonNull(element)) {
boolean newWindow = nonNull(command.getOpensWindow()) && command.getOpensWindow();
......@@ -308,8 +305,7 @@ public class SeleniumExecutor {
break;
case MOUSE_MOVE:
content = format("鼠标移动至:[%s]", target);
waitForElement(target, targets);
element = getElement(target, targets);
element = waitForElement(target, targets);
costTime = System.currentTimeMillis() - stepStartTime;
if (nonNull(element)) {
boolean newWindow = nonNull(command.getOpensWindow()) && command.getOpensWindow();
......@@ -329,8 +325,7 @@ public class SeleniumExecutor {
break;
case MOUSE_UP:
content = format("停止长按:[%s]", target);
waitForElement(target, targets);
element = getElement(target, targets);
element = waitForElement(target, targets);
costTime = System.currentTimeMillis() - stepStartTime;
if (nonNull(element)) {
boolean newWindow = nonNull(command.getOpensWindow()) && command.getOpensWindow();
......@@ -351,8 +346,7 @@ public class SeleniumExecutor {
case SELECT:
String label = seleniumHelper.getValue(value);
content = format("下拉框选择:[%s]", label);
waitForElement(target, targets);
element = getElement(target, targets);
element = waitForElement(target, targets);
costTime = System.currentTimeMillis() - stepStartTime;
if (nonNull(element)) {
movetoElementView(element);
......@@ -366,8 +360,7 @@ public class SeleniumExecutor {
break;
case MOUSE_OVER:
content = format("鼠标悬停:[%s]", target);
waitForElement(target,targets);
element = getElement(target, targets);
element = waitForElement(target,targets);
costTime = System.currentTimeMillis() - stepStartTime;
if (nonNull(element)) {
movetoElementView(element);
......@@ -379,8 +372,7 @@ public class SeleniumExecutor {
break;
case MOUSE_OUT:
content = format("鼠标移开:[%s]", target);
waitForElement(target,targets);
element = getElement(target, targets);
element = waitForElement(target,targets);
costTime = System.currentTimeMillis() - stepStartTime;
if (nonNull(element)) {
new Actions(driver).moveToElement(element, 0, 0).perform();
......@@ -392,8 +384,7 @@ public class SeleniumExecutor {
break;
case TYPE:
content = format("输入内容:[%s]", value);
waitForElement(target,targets);
element = getElement(target, targets);
element = waitForElement(target,targets);
costTime = System.currentTimeMillis() - stepStartTime;
if (nonNull(element)) {
String elementType = element.getAttribute("type");
......@@ -414,8 +405,7 @@ public class SeleniumExecutor {
break;
case SEND_KEYS:
content = format("输入按键:[%s]", value);
waitForElement(target,targets );
element = getElement(target, targets);
element = waitForElement(target,targets );
costTime = System.currentTimeMillis() - stepStartTime;
if (nonNull(element)) {
String key = seleniumHelper.getKeyForSend(value);
......@@ -481,13 +471,16 @@ public class SeleniumExecutor {
jse.executeScript("arguments[0].scrollIntoView(true);", element);
}
private void waitForElement(String target, List<List<String>> targets) {
private WebElement waitForElement(String target, List<List<String>> targets) {
try {
new WebDriverWait(driver, 3).until(webDriver -> {
WebElement element = getElement(target, targets);
return nonNull(element) && !ExpectedConditions.stalenessOf(element).apply(driver);
});
new WebDriverWait(driver, 3).until(webDriver -> nonNull(getElement(target, targets)));
WebElement element = getElement(target, targets);
if (ExpectedConditions.stalenessOf(element).apply(driver)){
element = getElement(target, targets);
}
return element;
} catch (Exception ignored) {
return null;
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论