Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Assemble.java =================================================================== diff -u -r18773 -r18810 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Assemble.java (.../Assemble.java) (revision 18773) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Assemble.java (.../Assemble.java) (revision 18810) @@ -37,7 +37,7 @@ // login.login_secondSupplyRoom(); Actions moveover = new Actions(Utils.driver); - moveover.moveToElement(Utils.retryingFind(By.id("packing"))) + moveover.moveToElement(Utils.retryingFind(By.id("packing"))).moveByOffset(3, 3).build() .perform(); Utils.retryingFindAndClick(By.linkText(Utils.settings @@ -179,8 +179,8 @@ try { Utils.refresh(); Actions moveover = new Actions(Utils.driver); - moveover.moveToElement(Utils.retryingFind(By.id("packing"))) - .perform(); + moveover.moveToElement(Utils.retryingFind(By.id("packing"))).moveByOffset(3, 3).build() + .perform(); Utils.retryingFindAndClick(By.linkText(Utils.settings .getJSONObject("一级供应室装配组").getString("名称2"))); @@ -464,8 +464,8 @@ Utils.waitPageLoaded(); Utils.refresh(); - action.moveToElement(Utils.retryingFind(By.id("packing"))) - .perform(); + action.moveToElement(Utils.retryingFind(By.id("packing"))).moveByOffset(3, 3).build() + .perform(); Utils.retryingFindAndClick( By.linkText(Utils.settings .getJSONObject("一级供应室装配组").getString("名称2"))); @@ -586,8 +586,8 @@ .xpath("//span/span[contains(text(), '是')]")); Utils.waitPageLoaded(); Utils.refresh(); - action.moveToElement(Utils.retryingFind(By.id("packing"))) - .perform(); + action.moveToElement(Utils.retryingFind(By.id("packing"))).moveByOffset(3, 3).build() + .perform(); Utils.retryingFindAndClick( By.linkText(Utils.settings.getJSONObject("一级供应室装配组") .getString("名称2"))); @@ -617,8 +617,8 @@ Utils.refresh(); Actions moveover = new Actions(Utils.driver); - moveover.moveToElement(Utils.retryingFind(By.id("packing"))) - .perform(); + moveover.moveToElement(Utils.retryingFind(By.id("packing"))).moveByOffset(3, 3).build() + .perform(); Utils.retryingFindAndClick(By.linkText(Utils.settings .getJSONObject("一级供应室装配组").getString("名称1"))); @@ -649,8 +649,8 @@ Utils.refresh(); moveover = new Actions(Utils.driver); - moveover.moveToElement(Utils.retryingFind(By.id("packing"))) - .perform(); + moveover.moveToElement(Utils.retryingFind(By.id("packing"))).moveByOffset(3, 3).build() + .perform(); Utils.retryingFindAndClick(By.linkText(Utils.settings .getJSONObject("一级供应室装配组").getString("名称1"))); @@ -701,8 +701,8 @@ try { Utils.refresh(); Actions moveover = new Actions(Utils.driver); - moveover.moveToElement(Utils.retryingFind(By.id("packing"))) - .perform(); + moveover.moveToElement(Utils.retryingFind(By.id("packing"))).moveByOffset(3, 3).build() + .perform(); Utils.retryingFindAndClick(By.linkText(Utils.settings .getJSONObject("二级供应室装配组").getString("名称1"))); @@ -766,15 +766,12 @@ try { Utils.refresh(); Actions moveover = new Actions(Utils.driver); - moveover.moveToElement(Utils.retryingFind(By.id("packing"))) - .perform(); - + moveover.moveToElement(Utils.retryingFind(By.id("packing"))).moveByOffset(3, 3).build() + .perform(); Utils.retryingFindAndClick(By.linkText(Utils.settings .getJSONObject("一级供应室装配组").getString("名称3"))); - WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_packing")); - Utils.retryingFindAndSendKeys( By.cssSelector("input[name='basketBarcodeInput']"), Utils.settings.getJSONObject("一级供应室清洗篮筐4").getString("条码") @@ -949,8 +946,8 @@ public void assemble_secondSupplyRoomdressing() { try { Actions moveover = new Actions(Utils.driver); - moveover.moveToElement(Utils.retryingFind(By.id("packing"))) - .perform(); + moveover.moveToElement(Utils.retryingFind(By.id("packing"))).moveByOffset(3, 3).build() + .perform(); Utils.retryingFindAndClick(By.linkText(Utils.settings .getJSONObject("二级供应室装配组").getString("名称2"))); @@ -1037,8 +1034,8 @@ try { Utils.refresh(); Actions moveover = new Actions(Utils.driver); - moveover.moveToElement(Utils.retryingFind(By.id("packing"))) - .perform(); + moveover.moveToElement(Utils.retryingFind(By.id("packing"))).moveByOffset(3, 3).build() + .perform(); Utils.retryingFindAndClick(By.linkText(Utils.settings .getJSONObject("二级供应室装配组").getString("名称3"))); Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/One_use.java =================================================================== diff -u -r18729 -r18810 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/One_use.java (.../One_use.java) (revision 18729) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/One_use.java (.../One_use.java) (revision 18810) @@ -139,7 +139,7 @@ Utils.waitPageLoaded(); Utils.doWait(1000); //等待表单提交成功 - wait.until(ExpectedConditions.attributeToBe(Utils.driver.findElement(By + wait.until(ExpectedConditions.attributeToBe(Utils.fluentWaitUntilFind(By .id("formSubmitResult")), "value", "1")); //获取一次性物品入库后的条码 Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/Utils.java =================================================================== diff -u -r18785 -r18810 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/Utils.java (.../Utils.java) (revision 18785) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/Utils.java (.../Utils.java) (revision 18810) @@ -28,6 +28,7 @@ import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.ui.ExpectedCondition; +import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.Wait; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.Assert; @@ -49,7 +50,7 @@ public static final String ACTION_SWITCH_TO_FRAME = "switchToFrame"; public static final String ACTION_CLEAR = "clear"; public static final String ACTION_NOP = "nop"; - + /* * 本地运行测试用例 */ @@ -58,8 +59,8 @@ * 远程运行测试用例 */ public static final int RUN_MODE_REMOTE = 1; - - /* + + /* * 测试用例的运行模式 */ private static int testRunMode = RUN_MODE_REMOTE; @@ -177,8 +178,9 @@ // false); // 禁用持续悬停特性,避免web页面的控件闪烁 - ieCapabilities.setCapability(InternetExplorerDriver.ENABLE_PERSISTENT_HOVERING, false); - + ieCapabilities.setCapability( + InternetExplorerDriver.ENABLE_PERSISTENT_HOVERING, false); + ieCapabilities .setCapability( InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, @@ -402,9 +404,10 @@ } else if (ACTION_SWITCH_TO_FRAME.equalsIgnoreCase(actionType)) { // 跳出所有的frame。调用后:you are now outside both frames // Utils.driver.switchTo().defaultContent(); - + Wait wait = WaitFactory.createDefaultWait(); // Utils.driver.switchTo().frame(element); - switchToFrame(element); +// switchToFrame(element); + wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(element)); logger.info("切换[" + by + "],frame成功"); } break; @@ -549,7 +552,7 @@ return driver.findElement(by); } }); - logger.info("元素是否存在:"+isFind(element)); + logger.info("元素是否存在:" + isFind(element)); return element; } @@ -746,9 +749,11 @@ * @param frame */ public static void switchToFrame(WebElement frame) { - Utils.driver.switchTo().frame(frame); - // 由于切换frame有点不太稳定,切换完立刻点击可能会出现永远找不到元素,所以这里暂时用要休眠一下来解决 - doWait(null); + if (isFind(frame)) { + Utils.driver.switchTo().frame(frame); + // 由于切换frame有点不太稳定,切换完立刻点击可能会出现永远找不到元素,所以这里暂时用要休眠一下来解决 + doWait(500); + } } /** @@ -758,6 +763,7 @@ * frame的名字 */ public static void switchToFrame(String frame) { + Utils.driver.switchTo().frame(frame); // 由于切换frame有点不太稳定,切换完立刻点击可能会出现永远找不到元素,所以这里暂时用要休眠一下来解决 doWait(null); @@ -962,16 +968,16 @@ // .xpath("//div/span[contains(text(),'满意度调查表')]"))); // 获取警告信息对话框的集合 By warningWindows = By - .cssSelector("div[class='x-tool x-tool-close']"); - + .cssSelector("div[class='x-tool x-tool-close']"); + List closeBtns = wait.until(driver -> { // waitPageLoaded(); return driver.findElements(warningWindows); }); int size = closeBtns.size(); logger.info("closeBtns.size() = " + size); // 逐个关闭对话框,先关闭最外层的。如果没关闭最外层的,里面的对话框无法关闭 - + for (int i = size - 1; i >= 0; i--) { // 尝试关闭对话框,关闭后判断是否真正关闭,如果没有关闭,则再次循环点击关闭按钮 @@ -984,8 +990,7 @@ .findElements(warningWindows); if (btns != null && (btns.size() - i) >= 1) { continue; - } - else{ + } else { j = 0; } } @@ -994,13 +999,12 @@ } } - - List btns = driver - .findElements(warningWindows); - if (btns != null){ - logger.info("after click close button, closeBtns.size() = " + btns.size()); + + List btns = driver.findElements(warningWindows); + if (btns != null) { + logger.info("after click close button, closeBtns.size() = " + + btns.size()); } - } catch (Exception e) { e.printStackTrace(); Assert.fail(e.getMessage()); @@ -1255,7 +1259,9 @@ // "img".equalsIgnoreCase(tagName)){ jsClick(webElement); } else { - webElement.click(); + if (isFind(webElement)) { + webElement.click(); + } } }