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

优化元素等待机制

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