Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Disinfection.java =================================================================== diff -u -r20870 -r21065 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Disinfection.java (.../Disinfection.java) (revision 20870) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Disinfection.java (.../Disinfection.java) (revision 21065) @@ -1199,11 +1199,12 @@ Utils.driver.switchTo().defaultContent(); Utils.retryingFindAndClick(By .xpath("//span[contains(text(), '个人桌面')]")); - Actions moveover = new Actions(Utils.driver); - moveover.moveToElement( - Utils.retryingFind(By.id("sterilizationRecord"))).perform(); - Utils.retryingFindAndClick(By.linkText(Utils.settings - .getJSONObject("灭菌炉分组").getString("低温等离子"))); + Utils.retryingFindAndHover(By.id("sterilizationRecord")); + if (Utils.isFind(Utils.retryingFind(By.linkText(Utils.settings + .getJSONObject("灭菌炉分组").getString("低温等离子"))))) { + Utils.retryingFindAndClick(By.linkText(Utils.settings + .getJSONObject("灭菌炉分组").getString("低温等离子"))); + } Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); if (Utils.isFind(Utils.retryingFind(By.id("addBtn")))) { Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Intervene.java =================================================================== diff -u -r20769 -r21065 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Intervene.java (.../Intervene.java) (revision 20769) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Intervene.java (.../Intervene.java) (revision 21065) @@ -5,9 +5,11 @@ import org.testng.annotations.BeforeMethod; import org.testng.AssertJUnit; import org.openqa.selenium.By; +import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.Keys; import org.openqa.selenium.WebElement; import org.openqa.selenium.os.WindowsUtils; + import test.forgon.disinfectsystem.selenium.tools.JSWaiter; import test.forgon.disinfectsystem.selenium.tools.Utils; @@ -221,6 +223,78 @@ } } + /** + * 干预使用记录 + * */ + @Test + public void Intervene_UserRecord() { + try { + Utils.refresh(); + Utils.retryingFindAndClick(By.id("enterpriseView")); + Utils.retryingFindAndSwitchToFrame(By.id("iframe_enterpriseView")); + Utils.retryingFindAndClick(By + .xpath("//div/span[contains(text(), '后台监控管理')]")); + Utils.retryingFindAndClick(By + .xpath("//div/a/span[contains(text(), '干预管理')]")); + Utils.retryingFindAndClick(By + .xpath("//div/a/span[contains(text(), '使用记录干预管理')]")); + Utils.retryingFindAndSwitchToFrame(By.id("mainFrame")); + if (Utils.isFind(Utils.retryingFind(By + .cssSelector("table[class='x-grid3-row-table']")))) { + Utils.retryingFindAndClick(By + .cssSelector("table[class='x-grid3-row-table']")); + if (Utils.isFind(Utils.retryingFind(By + .xpath("//button[contains(text(), '修改')]")))) { + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '修改')]")); + if (Utils.isFind(Utils.retryingFind(By.id("extTipMsg")))) { + System.out.print("这张单据状态不正确"); + } else { + String currentwindowhandle = Utils.driver + .getWindowHandle(); + Utils.driver.switchTo().window(currentwindowhandle); + if (Utils.isFind(Utils.retryingFind(By + .id("useRecordApplicationWin")))) { + Utils.retryingFindAndClick(By + .id("useRecordApplicationWin")); + ((JavascriptExecutor) Utils.driver).executeScript( + "arguments[0].scrollIntoView(false);", + Utils.retryingFind(By + .id("useRecordApplicationWin"))); + Utils.retryingFindAndClick(By.id("remark")); + Utils.retryingFindAndSendKeys(By.id("remark"), + "使用记录干预"); + if (Utils + .isFind(Utils.retryingFind(By + .cssSelector("div[class='x-grid3-cell-inner x-grid3-col-delAction']")))) { + Utils.retryingFindAndHover(By + .cssSelector("div[class='x-grid3-cell-inner x-grid3-col-delAction']")); + Utils.retryingFindAndClick(By + .cssSelector("div[class='x-grid3-cell-inner x-grid3-col-delAction']")); + } + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '保存')]")); + currentwindowhandle = Utils.driver + .getWindowHandle(); + Utils.driver.switchTo().window(currentwindowhandle); + if (Utils.isFind(Utils.retryingFind(By + .xpath("//button[contains(text(), '是')]")))) { + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '是')]")); + } + JSWaiter.waitUntilJQueryReady(); + } + + } + } + } + JSWaiter.waitUntilJQueryReady(); + } catch (Exception e) { + e.printStackTrace(); + AssertJUnit.fail(e.getMessage()); + } + } + @AfterMethod public void after() { Utils.driver.quit(); Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/ALL.java =================================================================== diff -u -r21032 -r21065 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/ALL.java (.../ALL.java) (revision 21032) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/ALL.java (.../ALL.java) (revision 21065) @@ -221,7 +221,7 @@ userrecord.UserRecord_success(); recyle.after(); recyle.init(); - /** 一级供应室回收二级供应室使用记录转换的申请单*/ + /** 一级供应室回收二级供应室使用记录转换的申请单 */ recyle.recyle_userRecordApplyUpdate(); Utils.waitUntilUrlChange( SERVER_URL @@ -552,6 +552,8 @@ .xpath("//div/a/span[contains(text(), '一次性物品管理')]")); one.One_use_stock(); logger.info("供应室获取高值耗材条码完成"); + intervene.Intervene_UserRecord(); + logger.info("供应室干预使用记录完成"); /*** 供应室领用 ***/ System.out.print("领用开始:"); Utils.refresh(); Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/sterilization/SterilizationTest.java =================================================================== diff -u -r21039 -r21065 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/sterilization/SterilizationTest.java (.../SterilizationTest.java) (revision 21039) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/sterilization/SterilizationTest.java (.../SterilizationTest.java) (revision 21065) @@ -38,8 +38,11 @@ Utils.retryingFindAndClick(By .xpath("//span[contains(text(), '个人桌面')]")); Utils.retryingFindAndHover(By.id("sterilizationRecord")); - Utils.retryingFindAndClick(By.linkText(Utils.settings - .getJSONObject("灭菌炉分组").getString("大型压力蒸汽"))); + if (Utils.isFind(Utils.retryingFind(By.linkText(Utils.settings + .getJSONObject("灭菌炉分组").getString("大型压力蒸汽"))))) { + Utils.retryingFindAndClick(By.linkText(Utils.settings + .getJSONObject("灭菌炉分组").getString("大型压力蒸汽"))); + } Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); @@ -236,10 +239,12 @@ Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); try { // 有的医院需要扫描灭菌完成确认人 - Utils.driver.findElement(By.id("completeUserBarcode")); - Utils.retryingFindAndSendKeys(By.id("completeUserBarcode"), - cssduser1Barcode + "\n"); - Utils.retryingFindAndClickByJavaScript(By.id("saveBtn")); + if (Utils.isFind(Utils.retryingFind(By + .id("completeUserBarcode")))) { + Utils.retryingFindAndSendKeys(By.id("completeUserBarcode"), + cssduser1Barcode + "\n"); + Utils.retryingFindAndClickByJavaScript(By.id("saveBtn")); + } } catch (Exception e1) { // 这里报错说明不需要扫描灭菌完成确认人 Utils.retryingFindAndClick(By @@ -256,12 +261,15 @@ Utils.retryingFindAndClick(By.id("confirmBtn")); Utils.driver.switchTo().window( Utils.driver.getWindowHandle()); - Utils.retryingFindAndSendKeys( - By.id("completeUserBarcode1"), cssduser1Barcode - + "\n"); - Utils.retryingFindAndClickByJavaScript(By.id("saveBtn")); - Utils.retryingFindAndSwitchToFrame(By - .id("iframe_sterilizationRecord")); + if (Utils.isFind(Utils.retryingFind(By + .id("completeUserBarcode1")))) { + Utils.retryingFindAndSendKeys( + By.id("completeUserBarcode1"), cssduser1Barcode + + "\n"); + Utils.retryingFindAndClickByJavaScript(By.id("saveBtn")); + Utils.retryingFindAndSwitchToFrame(By + .id("iframe_sterilizationRecord")); + } } } catch (Exception e) { // 这里报错说明不需要灭菌卸载、或者灭菌确认 @@ -274,8 +282,11 @@ } else { Utils.refresh(); Utils.retryingFindAndHover(By.id("sterilizationRecord")); - Utils.retryingFindAndClick(By.linkText(Utils.settings - .getJSONObject("灭菌炉分组").getString("大型压力蒸汽"))); + if (Utils.isFind(Utils.retryingFind(By.linkText(Utils.settings + .getJSONObject("灭菌炉分组").getString("大型压力蒸汽"))))) { + Utils.retryingFindAndClick(By.linkText(Utils.settings + .getJSONObject("灭菌炉分组").getString("大型压力蒸汽"))); + } Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); choiceSterilizationRecord(); @@ -292,15 +303,20 @@ Calendar calendar = Calendar.getInstance(); // 调短时间使发货不提示 calendar.add(Calendar.MINUTE, 1); - - Utils.retryingFindAndSendKeys( - By.id("biologicalMonitoringStartDate"), - sdf.format(calendar.getTime())); + if (Utils.isFind(Utils.retryingFind(By + .id("biologicalMonitoringStartDate")))) { + Utils.retryingFindAndSendKeys( + By.id("biologicalMonitoringStartDate"), + sdf.format(calendar.getTime())); + } // 调短时间使发货不提示 calendar.add(Calendar.MINUTE, 2); + if (Utils.isFind(Utils.retryingFind(By + .id("biologicalMonitoringEndDate")))) { Utils.retryingFindAndSendKeys( By.id("biologicalMonitoringEndDate"), sdf.format(calendar.getTime())); + } Utils.retryingFindAndSendKeys(By.id("monitorUserBarcode"), cssduser1Barcode + "\n"); Utils.retryingFindAndSendKeys(By.id("monitorCheckerBarcode"), @@ -331,8 +347,11 @@ Utils.refresh(); if (Utils.isFind(Utils.retryingFind(By.id("sterilizationRecord")))) { Utils.retryingFindAndHover(By.id("sterilizationRecord")); - Utils.retryingFindAndClick(By.linkText(Utils.settings - .getJSONObject("灭菌炉分组").getString("大型压力蒸汽"))); + if (Utils.isFind(Utils.retryingFind(By.linkText(Utils.settings + .getJSONObject("灭菌炉分组").getString("大型压力蒸汽"))))) { + Utils.retryingFindAndClick(By.linkText(Utils.settings + .getJSONObject("灭菌炉分组").getString("大型压力蒸汽"))); + } Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/Utils.java =================================================================== diff -u -r20970 -r21065 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/Utils.java (.../Utils.java) (revision 20970) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/Utils.java (.../Utils.java) (revision 21065) @@ -73,9 +73,9 @@ /* * 测试用例的运行模式 */ - private static RunMode testRunMode = RunMode.REMOTE; + private static RunMode testRunMode = RunMode.REMOTE; -// private static RunMode testRunMode = RunMode.LOCAL; + // private static RunMode testRunMode = RunMode.LOCAL; /* * 执行动作的方式,调用JS或者Selenium API @@ -181,11 +181,10 @@ WindowsUtils.killByName("IEDriverServer.exe *32"); WindowsUtils.killByName("IEDriverServer.exe"); WindowsUtils.killByName("iexplore.exe"); - WindowsUtils - .killByName("Command line server for the IE Driver.exe"); + WindowsUtils.killByName("Command line server for the IE Driver.exe"); WindowsUtils.killByName("iexplore.exe *32"); -// System.setProperty("webdriver.ie.driver", -// "C:\\IEDriverServer_Win32_3.7.0\\IEDriverServer.exe"); + // System.setProperty("webdriver.ie.driver", + // "C:\\IEDriverServer_Win32_3.7.0\\IEDriverServer.exe"); // 解决ie兼容模式设置导致无法启动问题 DesiredCapabilities ieCapabilities = DesiredCapabilities .internetExplorer(); @@ -194,7 +193,8 @@ // Terry Kwan, 2017-05-17 // ieCapabilities.setCapability(InternetExplorerDriver.NATIVE_EVENTS, // false); - ieCapabilities.setCapability(CapabilityType.BROWSER_NAME, "internet explorer"); + ieCapabilities.setCapability(CapabilityType.BROWSER_NAME, + "internet explorer"); // 禁用持续悬停特性,避免web页面的控件闪烁 ieCapabilities.setCapability( InternetExplorerDriver.ENABLE_PERSISTENT_HOVERING, false); @@ -220,7 +220,8 @@ driver = new RemoteWebDriver(new URL(seleniumHubURL), ieCapabilities); } else { - InternetExplorerOptions s = new InternetExplorerOptions(ieCapabilities); + InternetExplorerOptions s = new InternetExplorerOptions( + ieCapabilities); driver = new InternetExplorerDriver(s); String cap = ((InternetExplorerDriver) driver) .getCapabilities().toString(); @@ -371,7 +372,6 @@ public static WebElement retryingFindAssure(By by) { WebElement element = null; try { - element = fluentWaitUntilFind(by); } catch (Exception e) { @@ -436,9 +436,10 @@ System.out.println("disabled = " + attribute); if (!"true".equalsIgnoreCase(attribute) && element.isEnabled()) { - - clickWebElement(actionExecuteMethod, element); - logger.info("点击元素[" + by + "]成功"); + if (Utils.isFind(element)) { + clickWebElement(actionExecuteMethod, element); + logger.info("点击元素[" + by + "]成功"); + } } else { logger.info("元素[" + by + "]不是Enable状态,不能点击"); continue; @@ -447,22 +448,30 @@ // element.sendKeys(Keys.ENTER); } else if (ACTION_SENDKEYS.equalsIgnoreCase(actionType)) { - element.sendKeys(keys); + if (Utils.isFind(element)) { + element.sendKeys(keys); + } } else if (ACTION_CLEAR.equalsIgnoreCase(actionType)) { - element.clear(); + if (Utils.isFind(element)) { + element.clear(); + } } 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); - wait.until(ExpectedConditions - .frameToBeAvailableAndSwitchToIt(element)); - logger.info("切换[" + by + "],frame成功"); + if (Utils.isFind(element)) { + Wait wait = WaitFactory.createDefaultWait(); + // Utils.driver.switchTo().frame(element); + // switchToFrame(element); + wait.until(ExpectedConditions + .frameToBeAvailableAndSwitchToIt(element)); + logger.info("切换[" + by + "],frame成功"); + } } else if (ACTION_HOVER.equalsIgnoreCase(actionType)) { - Actions moveover = new Actions(Utils.driver); - moveover.moveToElement(element).perform(); - moveover.moveToElement(element, 1, 1).perform(); + if (Utils.isFind(element)) { + Actions moveover = new Actions(Utils.driver); + moveover.moveToElement(element).perform(); + moveover.moveToElement(element, 1, 1).perform(); + } } break; @@ -891,7 +900,8 @@ String text = cell.getText(); if (text != null) { if (text.equals("自定义器械包申请单") - || text.equals("消毒物品申请单")|| text.equals("质量监测回收申请单")) { + || text.equals("消毒物品申请单") + || text.equals("质量监测回收申请单")) { result = cell; break; } else { @@ -1180,7 +1190,7 @@ public static void refresh() { JSWaiter.waitUntilJQueryReady(); - Utils.switchToDefaultContent(); + Utils.switchToDefaultContent(); Utils.driver.navigate().refresh(); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); @@ -1314,8 +1324,8 @@ + "').getStore().isLoading();"; // 输入前先等待,看看是否已经加载完,因为处理科室改变物品会重新加载 Utils.waitPageLoaded(script); - Utils.retryingFind( - By.cssSelector("input[name='" + comboBoxName + "']")).clear(); + Utils.retryingFind(By.cssSelector("input[name='" + comboBoxName + "']")) + .clear(); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='" + comboBoxName + "']"), text); // 输入完等待加载完毕,加载完毕后才能点