Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/apply/helper/ApplyActionHelper.java =================================================================== diff -u -r19526 -r19660 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/apply/helper/ApplyActionHelper.java (.../ApplyActionHelper.java) (revision 19526) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/apply/helper/ApplyActionHelper.java (.../ApplyActionHelper.java) (revision 19660) @@ -26,172 +26,189 @@ */ public class ApplyActionHelper { - private final static Logger logger = LoggerFactory.getLogger(ApplyActionHelper.class); + private final static Logger logger = LoggerFactory + .getLogger(ApplyActionHelper.class); + public static void beforeApply(DeskIconEnum deskIconEnum) { + // 供应室返回修改 + ApplyGoodBo applyGoodBo = ApplyActionHelper.supplyRoomReturnModify(); - public static void beforeApply(DeskIconEnum deskIconEnum) { - // 供应室返回修改 - ApplyGoodBo applyGoodBo = ApplyActionHelper.supplyRoomReturnModify(); + // 供应室用户终止申请单和终止部分物品 + Utils.switchToFrame(applyGoodBo.getFrameId()); + applyGoodBo.setBtn(ApplyBtnEnum.CANCEL.getBtnId()); + ApplyActionHelper.doCancel(applyGoodBo); - // 供应室用户终止申请单和终止部分物品 - Utils.switchToFrame(applyGoodBo.getFrameId()); - applyGoodBo.setBtn(ApplyBtnEnum.CANCEL.getBtnId()); - ApplyActionHelper.doCancel(applyGoodBo); + // 临床再次修改提交 + applyGoodBo = ApplyGoodBoFactory.createApplyGoodBo(null, deskIconEnum, + ApplyBtnEnum.RETURN_MODIFY); + ApplyActionHelper.clinicalReModifySubmit(applyGoodBo); - // 临床再次修改提交 - applyGoodBo = ApplyGoodBoFactory.createApplyGoodBo(null, deskIconEnum, ApplyBtnEnum.RETURN_MODIFY); - ApplyActionHelper.clinicalReModifySubmit(applyGoodBo); + // 临床删除一张申请单 + Utils.switchToFrame(applyGoodBo.getFrameId()); + applyGoodBo.setBtn(ApplyBtnEnum.DELETE.getBtnId()); + ApplyActionHelper.deleteApplyForm(applyGoodBo); + } - // 临床删除一张申请单 - Utils.switchToFrame(applyGoodBo.getFrameId()); - applyGoodBo.setBtn(ApplyBtnEnum.DELETE.getBtnId()); - ApplyActionHelper.deleteApplyForm(applyGoodBo); - } + /** + * 终止申请单 + * + * @param applyGoodBo + * {@link ApplyGoodBo} + */ + private static void doCancel(ApplyGoodBo applyGoodBo) { + // 整单终止 + selectApplyGridModel(); + handleCancelWindow(applyGoodBo.getBtn()); + // 终止部分物品 + Utils.switchToDefaultContent(); + Utils.switchToFrame(applyGoodBo.getFrameId()); + openTheFirstRow(); + WebElement webElement = Utils.tryFind(By.id("cancelCheckedGood")); + if (Utils.isFind(webElement)) { + // @class=' x4-tree-checkbox'这里要有一个空格,不然会找不到 + Utils.retryingFindAndClick(By + .xpath("//*[@id='diposableTreeGrid']//input[@class=' x4-tree-checkbox']")); + handleCancelWindow("cancelCheckedGood"); + logger.info("部分终止申请单成功"); + } else { + logger.info("该医院没有部分终止功能"); + Utils.findConfirmAndClick(By.id("closeWin")); + } + logger.info("终止申请单成功"); + } - /** - * 终止申请单 - * - * @param applyGoodBo {@link ApplyGoodBo} - */ - private static void doCancel(ApplyGoodBo applyGoodBo) { - //整单终止 - selectApplyGridModel(); - handleCancelWindow(applyGoodBo.getBtn()); - //终止部分物品 - Utils.switchToDefaultContent(); - Utils.switchToFrame(applyGoodBo.getFrameId()); - openTheFirstRow(); - WebElement webElement = Utils.tryFind(By.id("cancelCheckedGood")); - if (Utils.isFind(webElement)) { - //@class=' x4-tree-checkbox'这里要有一个空格,不然会找不到 - Utils.retryingFindAndClick(By.xpath("//*[@id='diposableTreeGrid']//input[@class=' x4-tree-checkbox']")); - handleCancelWindow("cancelCheckedGood"); - logger.info("部分终止申请单成功"); - } - else { - logger.info("该医院没有部分终止功能"); - Utils.findConfirmAndClick(By.id("closeWin")); - } - logger.info("终止申请单成功"); - } + /** + * 删除申请单(默认删除第一行) + */ + private static void deleteApplyForm(ApplyGoodBo applyGoodBo) { + // 这里要确保选中第一行后才能往下执行去点删除按钮 + selectApplyGridModel(); + confirmDelete(applyGoodBo); + logger.info("删除申请单成功"); + } - /** - * 删除申请单(默认删除第一行) - */ - private static void deleteApplyForm(ApplyGoodBo applyGoodBo) { - //这里要确保选中第一行后才能往下执行去点删除按钮 - selectApplyGridModel(); - confirmDelete(applyGoodBo); - logger.info("删除申请单成功"); - } + /** + * 供应室用户点击返回修改 + */ + private static ApplyGoodBo supplyRoomReturnModify() { + ApplyGoodBo applyGoodBo = prepareReturnModify(); + openTheFirstRow(); + ApplyHelper.doSubmitForm(By.id(applyGoodBo.getBtn())); + logger.info("返回修改申请单,现在准备再次修改提交......."); + return applyGoodBo; + } - /** - * 供应室用户点击返回修改 - */ - private static ApplyGoodBo supplyRoomReturnModify() { - ApplyGoodBo applyGoodBo = prepareReturnModify(); - openTheFirstRow(); - ApplyHelper.doSubmitForm(By.id(applyGoodBo.getBtn())); - logger.info("返回修改申请单,现在准备再次修改提交......."); - return applyGoodBo; - } + /** + * 返回修改后临床用户重新修改提交,将右边第一个物品的数量修改成1 + * + * @param applyGoodBo + * {@link ApplyGoodBo} + */ + private static void clinicalReModifySubmit(ApplyGoodBo applyGoodBo) { + LoginUtil.loginWithClinical(); + ApplyHelper.openDeskTopIcon(applyGoodBo); + openTheFirstRow(); + ApplyHelper.editTemplateGoodAmount(ApplyEnum.DISPOSABLEGRID, 0, 1); + ApplyHelper.doSubmitForm(By.id("commitBtn")); + logger.info("修改返回的申请单成功"); + } - /** - * 返回修改后临床用户重新修改提交,将右边第一个物品的数量修改成1 - * - * @param applyGoodBo {@link ApplyGoodBo} - */ - private static void clinicalReModifySubmit(ApplyGoodBo applyGoodBo) { - LoginUtil.loginWithClinical(); - ApplyHelper.openDeskTopIcon(applyGoodBo); - openTheFirstRow(); - ApplyHelper.editTemplateGoodAmount(ApplyEnum.DISPOSABLEGRID, 0, 1); - ApplyHelper.doSubmitForm(By.id("commitBtn")); - logger.info("修改返回的申请单成功"); - } + /** + * 处理模态窗口的终止 + * + * @param cancelBtnId + * 要点击终止的按钮的id + */ + private static void handleCancelWindow(String cancelBtnId) { - /** - * 处理模态窗口的终止 - * - * @param cancelBtnId 要点击终止的按钮的id - */ - private static void handleCancelWindow(String cancelBtnId) { - - // 获得当前窗口 - String mainWindow = Utils.driver.getWindowHandle(); - - // 直接调用webElement的click,避免js打开模态窗口后代码阻塞的问题 - Utils.retryingFindAndClickBySeleniumAPI(By.id(cancelBtnId)); - - Utils.waitForWindowAmountEquals(2, 15000); - - // 获取所有窗口 - Set handles = Utils.driver.getWindowHandles(); - // 删除当前窗口 - handles.remove(mainWindow); - for (String windowHandle : handles) { - Utils.driver.switchTo().window(windowHandle); - logger.info("切换到模态窗口:{}成功", windowHandle); - } - Utils.retryingFindAndClick(By.id("other")); - Utils.retryingFindAndSendKeys(By.id("tem"), "其他终止原因"); - Utils.retryingFindAndClick(By.id("confirm")); - Utils.driver.switchTo().window(mainWindow); - ApplyHelper.waitSubmit(); - } + // 获得当前窗口 + String mainWindow = Utils.driver.getWindowHandle(); + // 直接调用webElement的click,避免js打开模态窗口后代码阻塞的问题 + Utils.retryingFindAndClickBySeleniumAPI(By.id(cancelBtnId)); - /** - * 准备进行返回修改操作(退出当前浏览器,然后用一级供应室用户重新登录) - * - * @return {@link ApplyGoodBo} - */ - private static ApplyGoodBo prepareReturnModify() { - LoginUtil.loginWithOneSupplyRoom(); - ApplyGoodBo applyGoodBo = ApplyGoodBoFactory.createApplyNormalGoodBo(SettingConstants.一级供应室用户, ApplyBtnEnum.RETURN_MODIFY); - ApplyHelper.openDeskTopIcon(applyGoodBo); - return applyGoodBo; - } + Utils.waitForWindowAmountEquals(2, 15000); + // 获取所有窗口 + Set handles = Utils.driver.getWindowHandles(); + // 删除当前窗口 + handles.remove(mainWindow); + for (String windowHandle : handles) { + Utils.driver.switchTo().window(windowHandle); + logger.info("切换到模态窗口:{}成功", windowHandle); + } + Utils.retryingFindAndClick(By.id("other")); + Utils.retryingFindAndSendKeys(By.id("tem"), "其他终止原因"); + Utils.retryingFindAndClick(By.id("confirm")); + Utils.driver.switchTo().window(mainWindow); + ApplyHelper.waitSubmit(); + } - /** - * 申请单选中grid的第一行 - */ - private static void selectApplyGridModel() { - String grid = "var a = Ext.getCmp('applyGrid');"; - String waitGrid = grid + "return a ? false : true"; - //等待页面渲染完成这个grid后才能去选中对应的行 - Utils.waitPageLoaded(waitGrid); - //选中第一行 - String selectGrid = grid + "a.getSelectionModel().selectRange(0,0);return a.getSelectionModel().isSelected(0) ? false : true;"; - Utils.waitPageLoaded(selectGrid); - logger.info("选中第一行元素成功"); - } + /** + * 准备进行返回修改操作(退出当前浏览器,然后用一级供应室用户重新登录) + * + * @return {@link ApplyGoodBo} + */ + private static ApplyGoodBo prepareReturnModify() { + LoginUtil.loginWithOneSupplyRoom(); + ApplyGoodBo applyGoodBo = ApplyGoodBoFactory.createApplyNormalGoodBo( + SettingConstants.一级供应室用户, ApplyBtnEnum.RETURN_MODIFY); + ApplyHelper.openDeskTopIcon(applyGoodBo); + return applyGoodBo; + } - /** - * 确认删除 - */ - private static void confirmDelete(ApplyGoodBo applyGoodBo) { - Utils.retryingFindAndClick(By.id(applyGoodBo.getBtn())); - Utils.switchToDefaultContent(); - Utils.retryingFindAndClick(By.xpath("//button[contains(text(), '是')]")); - ApplyHelper.waitSubmit(); - } + /** + * 申请单选中grid的第一行 + */ + private static void selectApplyGridModel() { + String grid = "var a = Ext.getCmp('applyGrid');"; + String waitGrid = grid + "return a ? false : true"; + // 等待页面渲染完成这个grid后才能去选中对应的行 + Utils.waitPageLoaded(waitGrid); + // 选中第一行 + String selectGrid = grid + + "a.getSelectionModel().selectRange(0,0);return a.getSelectionModel().isSelected(0) ? false : true;"; + Utils.waitPageLoaded(selectGrid); + logger.info("选中第一行元素成功"); + } - /** - * 打开第一行的数据 - */ - private static void openTheFirstRow() { - selectApplyGridModel(); - // String script = "document.getElementById('applyGrid').children[1].children[1].children[0].children[0].children[1].children[0].children[0].getElementsByTagName('td')[1].getElementsByTagName('a')[0].click();"; - String script = Utils.getFirstCustomAttributeDom("getSerialNo"); - script += " var cc = getSerialNo('a', 'formDetail');cc.click();"; - Utils.runJavaScript(script); - // Utils.retryingFindAndClick(By.className("formDetail")); - Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); - JSWaiter.waitUntilJQueryReady(); - logger.info("打开第一行成功"); - } + /** + * 确认删除 + */ + private static void confirmDelete(ApplyGoodBo applyGoodBo) { + Utils.retryingFindAndClick(By.id(applyGoodBo.getBtn())); + Utils.switchToDefaultContent(); + if (Utils.isFind(Utils.retryingFind(By + .xpath("//button[contains(text(), '是')]")))) { + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '是')]")); + } else { + if (Utils.isFind(Utils.retryingFind(By + .xpath("//button[contains(text(), '删除')]")))) { + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '删除')]")); + Utils.switchToDefaultContent(); + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '是')]")); + } + } + ApplyHelper.waitSubmit(); + } + /** + * 打开第一行的数据 + */ + private static void openTheFirstRow() { + selectApplyGridModel(); + // String script = + // "document.getElementById('applyGrid').children[1].children[1].children[0].children[0].children[1].children[0].children[0].getElementsByTagName('td')[1].getElementsByTagName('a')[0].click();"; + String script = Utils.getFirstCustomAttributeDom("getSerialNo"); + script += " var cc = getSerialNo('a', 'formDetail');cc.click();"; + Utils.runJavaScript(script); + // Utils.retryingFindAndClick(By.className("formDetail")); + Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); + JSWaiter.waitUntilJQueryReady(); + logger.info("打开第一行成功"); + } }