Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/Utils.java =================================================================== diff -u -r19407 -r19469 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/Utils.java (.../Utils.java) (revision 19407) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/Utils.java (.../Utils.java) (revision 19469) @@ -349,7 +349,27 @@ } return element; } + + /** + * 重复查找,当出现引用的element过时后,重新查找该element + * 如果找不到元素,会抛出异常 + * + * @param by + * @return + */ + public static WebElement retryingFindAssure(By by) { + WebElement element = null; + try { + element = fluentWaitUntilFind(by); + + } catch (Exception e) { + throw new NoSuchElementException(String.format( + "找不到对应的元素:%s,原因如下:\n%s", by, e)); + } + return element; + } + /** * 重复查找和执行动作(click或sendKeys等),当出现引用的element过时后,重新查找该element * @@ -618,17 +638,6 @@ } /** - * 等待对象使用waitSetting - * - * @see Utils#findByAwait(By, WebDriverWait) - * @deprecated 与retryingFind方法有部分重复,需要重构后处理 - */ - public static WebElement findByAwait(By by) { - WebDriverWait waitSetting = new WebDriverWait(driver, 15, 600); - return findByAwait(by, waitSetting); - } - - /** * 查找页面的节点,使用轮询方式,会一直阻塞,如果超过指定的时间仍然找不到则会抛出异常 * * @param wait @@ -666,6 +675,9 @@ /** * 尝试寻找某个节点 * + * Terry Kwan:本方法目前不能直接改为调用retryingFind方法,修改后的运行会出问题。 + * 找到原因后,可以统一为retryingFind方法 + * * @return 返回空则表示找不到 */ public static WebElement tryFind(By by) { @@ -691,13 +703,12 @@ } /** - * 在对应的文本框输入想要的内容 + * 在对应的文本框输入想要的内容,输入前清空输入框 * * @param keys * 要输入的内容 */ - @Deprecated - public static WebElement findByAwaitAndSend(By by, + public static WebElement retryingFindAndClearBeforeSendKeys(By by, java.lang.CharSequence... keys) { // 先清空文本框上面的然后再输入 // WebElement webElement = findByAwaitAndClear(by); @@ -1262,7 +1273,7 @@ + "').getStore().isLoading();"; // 输入前先等待,看看是否已经加载完,因为处理科室改变物品会重新加载 Utils.waitPageLoaded(script); - Utils.findByAwaitAndSend( + Utils.retryingFindAndClearBeforeSendKeys( By.cssSelector("input[name='" + comboBoxName + "']"), text); // 输入完等待加载完毕,加载完毕后才能点 Utils.waitPageLoaded(script); Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Recyle.java =================================================================== diff -u -r19357 -r19469 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Recyle.java (.../Recyle.java) (revision 19357) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Recyle.java (.../Recyle.java) (revision 19469) @@ -101,8 +101,8 @@ Utils.waitForWindowAmountEquals(1, 8000); Utils.switchToDefaultContent(); // JSWaiter.waitUntilJQueryReady(); - Utils.jsClick(Utils.findByAwait(By.xpath("html/body/div[2]/div[1]/form/div[1]/input"))); - Utils.isFind(Utils.findByAwait(By.id("tousseItemTable"))); + Utils.jsClick(Utils.retryingFindAssure(By.xpath("html/body/div[2]/div[1]/form/div[1]/input"))); + Utils.isFind(Utils.retryingFindAssure(By.id("tousseItemTable"))); // waitUrlChange(); @@ -995,7 +995,7 @@ 8); Actions actions = new Actions(Utils.driver); actions.moveToElement( - Utils.findByAwait(By.id("awaitForRecycleTable"))) + Utils.retryingFindAssure(By.id("awaitForRecycleTable"))) .sendKeys( Utils.settings.getJSONObject("临床科室") .getString("条码") + "\n").perform(); @@ -1121,11 +1121,11 @@ WebElement table = null; try { // 扫描回收人条码 - if(Utils.isFind(Utils.findByAwait(By.id("recyclingUser")))){ + if(Utils.isFind(Utils.retryingFindAssure(By.id("recyclingUser")))){ table = this.scanBarcode(By.id("recyclingUser"), "回收人"); this.logger.info("扫描回收人条码成功");} // 扫描清点人条码 - if(Utils.isFind(Utils.findByAwait(By.id("operator")))){ + if(Utils.isFind(Utils.retryingFindAssure(By.id("operator")))){ table = this.scanBarcode(By.id("operator"), "清点人"); this.logger.info("扫描清点人条码成功");} } catch (Exception e) { Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/apply/service/BorrowApplyServiceImpl.java =================================================================== diff -u -r18900 -r19469 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/apply/service/BorrowApplyServiceImpl.java (.../BorrowApplyServiceImpl.java) (revision 18900) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/apply/service/BorrowApplyServiceImpl.java (.../BorrowApplyServiceImpl.java) (revision 19469) @@ -41,8 +41,8 @@ String supplyRoomName = Utils.settings.getJSONObject(name).optString(SettingConstants.科室名称, null); assertNotNull(supplyRoomName); //这里要按两下下才出来 - Utils.findByAwaitAndSend(By.id("handleDepart"), Keys.DOWN); - Utils.findByAwaitAndSend(By.id("handleDepart"), Keys.DOWN); + Utils.retryingFindAndClearBeforeSendKeys(By.id("handleDepart"), Keys.DOWN); + Utils.retryingFindAndClearBeforeSendKeys(By.id("handleDepart"), Keys.DOWN); Utils.retryingFindAndClick(By.xpath("//div/div/div[contains(text(), '" + supplyRoomName + "')]")); } @@ -70,10 +70,10 @@ private void setGood(String goodName, Integer amount) { String js = "return top.tousseAndDiposableGoodsStoreForBorrowingIsLoaded == true ? false : true;"; Utils.waitPageLoaded(js); - Utils.findByAwaitAndSend(By.id("leaseTousseName"), goodName); + Utils.retryingFindAndClearBeforeSendKeys(By.id("leaseTousseName"), goodName); Utils.waitPageLoaded(js); Utils.retryingFindAndClick(By.xpath("//div/div/div[contains(text(), '" + goodName + "')]")); - Utils.findByAwaitAndSend(By.id("applicantAmount"), amount + "\n"); + Utils.retryingFindAndClearBeforeSendKeys(By.id("applicantAmount"), amount + "\n"); // Utils.findByAwaitAndClear(By.id("leaseTousseName")); // Utils.findByAwaitAndClear(By.id("applicantAmount")); } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/apply/helper/ApplyHelper.java =================================================================== diff -u -r18900 -r19469 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/apply/helper/ApplyHelper.java (.../ApplyHelper.java) (revision 18900) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/apply/helper/ApplyHelper.java (.../ApplyHelper.java) (revision 19469) @@ -125,7 +125,7 @@ public static void applyCustomTousse(String customTousse, Map applyGoods) { String tousse = Utils.settings.getJSONObject(customTousse).optString(SettingConstants.名称, null); assertNotNull(tousse); - Utils.findByAwaitAndSend(By.id("name"), tousse); + Utils.retryingFindAndClearBeforeSendKeys(By.id("name"), tousse); for (Map.Entry applyGood : applyGoods.entrySet()) { addApplyMaterial(applyGood.getKey(), applyGood.getValue()); } @@ -176,7 +176,7 @@ */ private static void fillInFields(Map fields) { for (Map.Entry entry : fields.entrySet()) { - Utils.findByAwaitAndSend(By.id(entry.getKey()), entry.getValue()); + Utils.retryingFindAndClearBeforeSendKeys(By.id(entry.getKey()), entry.getValue()); } } @@ -190,7 +190,7 @@ private static void addApplyMaterial(String goodName, Integer count) { String material = Utils.settings.getJSONObject(goodName).optString(SettingConstants.名称, null); assertNotNull(material); - Utils.findByAwaitAndSend(By.id("material"), material); + Utils.retryingFindAndClearBeforeSendKeys(By.id("material"), material); Utils.retryingFindAndClick(By.xpath("//div/div[contains(text(), '" + material + "')]")); Utils.retryingFindAndSendKeys(By.id("count1"), count + "\n"); } @@ -303,7 +303,7 @@ */ private static void setAmount(String goodName, int amount) { Utils.extJS4comboBoxInput("package1", goodName); - Utils.findByAwaitAndSend(By.cssSelector("input[name='count1']"), amount + "\n"); + Utils.retryingFindAndClearBeforeSendKeys(By.cssSelector("input[name='count1']"), amount + "\n"); } }