/** * */ package test_4_1; import net.sf.json.JSONObject; import org.testng.annotations.AfterMethod; import org.testng.annotations.Test; import org.testng.annotations.BeforeMethod; import org.testng.AssertJUnit; import java.text.SimpleDateFormat; import java.util.Date; import java.util.NoSuchElementException; import java.util.concurrent.TimeUnit; import java.util.function.Function; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.StaleElementReferenceException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.ui.FluentWait; import org.openqa.selenium.support.ui.Wait; import test_4_1.tools.Utils; /** * @author cherry 2016-03-02 * */ public class Disinfection { boolean displayed = false; @BeforeMethod public void init() { try { Utils.init(); Login login = new Login(); login.login_oneSupplyRoom(); /** * 调试用 * * login.login_secondSupplyRoom(); */ Actions moveover = new Actions(Utils.driver); moveover.moveToElement( Utils.retryingFind(By.id("sterilizationRecord"))).perform(); Utils.retryingFindAndClick(By.linkText(Utils.settings.getJSONObject("灭菌炉分组") .getString("大型压力蒸汽"))); /** * 调试用 * * Utils.retryingFind( * By.linkText(Utils.settings.getJSONObject("二级供应室灭菌炉") * .getString("分类"))).click(); */ WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); // Utils.retryingFind( // By.xpath("//button[contains(text(), '添加')]")).click(); // // Utils.driver.switchTo().defaultContent(); // String currentwindowhandle = Utils.driver.getWindowHandle(); // Utils.driver.switchTo().window(currentwindowhandle); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 灭菌失败 * */ @Test public void disinfection_fail() { Utils.retryingFindAndClick(By.xpath("//button[contains(text(), '保存')]")); } /** * 灭菌装载 * */ @Test public void disinfection_loading() { try { Utils.driver.navigate().refresh(); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.tryToCloseWarningWindow(); Utils.retryingFindAndClick(By.id("sterilizationLoading")); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationLoading")); String barcode = Utils.settings.getJSONObject("灭菌篮筐01") .getString("条码"); Utils.retryingFindAndSendKeys(By.id("barcode"), barcode + "\n"); displayed = false; WebElement element =Utils.retryingFind(By .xpath("//button[contains(text(), '是')]")); if (element != null) { displayed = element.isDisplayed(); if (displayed) { Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); }} } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 外部代理灭菌装载 * */ @Test public void disinfection_loading_outside() { try { Utils.driver.navigate().refresh(); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.tryToCloseWarningWindow(); Utils.retryingFindAndClick(By.id("sterilizationLoading")); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationLoading")); String barcode = Utils.settings.getJSONObject("灭菌筐02") .getString("条码"); Utils.retryingFindAndSendKeys(By.id("barcode"), barcode + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); Utils.retryingFindAndClick(By .cssSelector("div[class='x-grid3-hd-inner x-grid3-hd-checker']")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '载入')]")); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 第一炉灭菌 * */ @Test public void disinfection_frist() { try { JSONObject sterilizerObj = Utils.settings.getJSONObject("1号高温蒸汽灭菌炉"); String sterilizerBarcode = sterilizerObj.getString("条码"); String sterilizationProcedureBarcode = ((JSONObject)sterilizerObj.getJSONArray("灭菌程序").get(0)).getString("条码"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), sterilizerBarcode + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), sterilizationProcedureBarcode + "\n"); // Utils.retryingFindAndClick(By.id("sterilizationPurpose")); // click.click(Utils.retryingFind(By.xpath("//div[contains(text(), '每天例行监测')]"))).perform(); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Alert alertBox = Utils.driver.switchTo().alert(); AssertJUnit.assertEquals("没有添加灭菌的物品,继续灭菌吗?", alertBox.getText()); alertBox.accept(); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '灭菌中')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '完成灭菌')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 灭菌中断后,灭菌成功 * */ @Test public void disinfection_stopAndSuccess() { try { Utils.retryingFindAndSendKeys(By.id("sterilizationPurpose"), Keys.DOWN); Wait wait = new FluentWait(Utils.driver) .withTimeout(5000, TimeUnit.MILLISECONDS) .pollingEvery(250, TimeUnit.MILLISECONDS) .ignoring(NoSuchElementException.class) .ignoring(StaleElementReferenceException.class); WebElement Purpose = wait .until(new Function() { public WebElement apply(WebDriver driver) { return Utils.retryingFind(By .xpath("//div[contains(text(), '器械包灭菌')]")); } }); Purpose.click(); JSONObject sterilizerObj = Utils.settings.getJSONObject("1号高温蒸汽灭菌炉"); String sterilizerBarcode = sterilizerObj.getString("条码"); String sterilizationProcedureBarcode = ((JSONObject)sterilizerObj.getJSONArray("灭菌程序").get(0)).getString("条码"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), sterilizerBarcode + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), sterilizationProcedureBarcode + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), Utils.settings .getJSONObject("灭菌筐02").getString("条码") + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), Utils.settings .getJSONObject("一级供应室灭菌篮筐3").getString("条码") + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), Utils.settings .getJSONObject("一级供应室敷料包").getString("固定条码") + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '灭菌中')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '灭菌中断')]")); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); /** 登记灭菌中断的质量监测 **/ currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("formName"), Keys.DOWN); Utils.retryingFindAndClick(By .xpath("//div[contains(text(), '灭菌器故障')]")); Utils.retryingFindAndSendKeys(By.id("tousseName"), Keys.DOWN); Utils.retryingFindAndSendKeys(By.id("configItemOption181"), "故障原因" + "\n"); Utils.retryingFindAndSendKeys(By.id("tousseName"), "\n"); Utils.retryingFindAndClick(By.id("saveBtn")); /** 继续灭菌 **/ frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.cssSelector("img[title='重新灭菌']")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '继续灭菌')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '灭菌中')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '完成灭菌')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 灭菌中断后,灭菌成功 * */ @Test public void disinfection_gdsy_stopAndSuccess1() { try { Utils.retryingFindAndSendKeys(By.id("sterilizationPurpose"), Keys.DOWN); Wait wait = new FluentWait(Utils.driver) .withTimeout(5000, TimeUnit.MILLISECONDS) .pollingEvery(250, TimeUnit.MILLISECONDS) .ignoring(NoSuchElementException.class) .ignoring(StaleElementReferenceException.class); WebElement Purpose = wait .until(new Function() { public WebElement apply(WebDriver driver) { return Utils.retryingFind(By .xpath("//div[contains(text(), '器械包灭菌')]")); } }); Purpose.click(); JSONObject sterilizerObj = Utils.settings.getJSONObject("1号高温蒸汽灭菌炉"); String sterilizerBarcode = sterilizerObj.getString("条码"); String sterilizationProcedureBarcode = ((JSONObject)sterilizerObj.getJSONArray("灭菌程序").get(0)).getString("条码"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), sterilizerBarcode + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), sterilizationProcedureBarcode + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), Utils.settings .getJSONObject("一级供应室用户").getString("条码") + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), Utils.settings .getJSONObject("灭菌筐02").getString("条码") + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '一键入炉')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '灭菌中')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '灭菌中断')]")); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); /** 登记灭菌中断的质量监测 **/ currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("material"), Keys.DOWN); Utils.retryingFindAndSendKeys(By.id("configItemOption27"), Keys.DOWN); Utils.retryingFindAndSendKeys(By.id("configItemOption28"), "3" + "\n"); Utils.retryingFindAndSendKeys(By.id("configItemOption30"), "P1" + "\n"); Utils.retryingFindAndSendKeys(By.id("configItemOption23"), Keys.DOWN); Utils.retryingFindAndSendKeys(By.id("configItemOption29"), Keys.DOWN); Utils.retryingFindAndSendKeys(By.id("material"), "\n"); Utils.retryingFindAndSendKeys(By.id("configItemOption27"), "\n"); Utils.retryingFindAndSendKeys(By.id("configItemOption23"), "\n"); Utils.retryingFindAndSendKeys(By.id("configItemOption29"), "\n"); Utils.retryingFindAndClick(By .cssSelector("input[name='cconfigItemOption24']")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); /** 继续灭菌 **/ frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.cssSelector("img[title='重新灭菌']")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '继续灭菌')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '灭菌中')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '完成灭菌')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("completeUserBarcode"), Utils.settings.getJSONObject("一级供应室用户").getString("条码") + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 灭菌中断后,灭菌成功 * */ @Test public void disinfection_gdsy_stopAndSuccess() { try { Utils.retryingFindAndSendKeys(By.id("sterilizationPurpose"), Keys.DOWN); Wait wait = new FluentWait(Utils.driver) .withTimeout(5000, TimeUnit.MILLISECONDS) .pollingEvery(250, TimeUnit.MILLISECONDS) .ignoring(NoSuchElementException.class) .ignoring(StaleElementReferenceException.class); WebElement Purpose = wait .until(new Function() { public WebElement apply(WebDriver driver) { return Utils.retryingFind(By .xpath("//div[contains(text(), '器械包灭菌')]")); } }); Purpose.click(); JSONObject sterilizerObj = Utils.settings.getJSONObject("1号高温蒸汽灭菌炉"); String sterilizerBarcode = sterilizerObj.getString("条码"); String sterilizationProcedureBarcode = ((JSONObject)sterilizerObj.getJSONArray("灭菌程序").get(0)).getString("条码"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), sterilizerBarcode + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), sterilizationProcedureBarcode + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), Utils.settings .getJSONObject("一级供应室用户").getString("条码") + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), Utils.settings .getJSONObject("灭菌筐02").getString("条码") + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '一键入炉')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '灭菌中')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '灭菌中断')]")); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); /** 登记灭菌中断的质量监测 **/ currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); // Utils.retryingFindAndSendKeys(By.id("material"),Keys.DOWN); // Utils.retryingFindAndSendKeys(By.id("configItemOption27"), // Keys.DOWN); // Utils.retryingFindAndSendKeys(By.id("configItemOption28"), // "3" + "\n"); // Utils.retryingFindAndSendKeys(By.id("configItemOption30"), // "P1" + "\n"); // Utils.retryingFindAndSendKeys(By.id("configItemOption23"), // Keys.DOWN); // Utils.retryingFindAndSendKeys(By.id("configItemOption29"), // Keys.DOWN); // Utils.retryingFindAndSendKeys(By.id("material"), "\n"); // Utils.retryingFind(By.id("configItemOption27")) // .sendKeys("\n"); // Utils.retryingFind(By.id("configItemOption23")) // .sendKeys("\n"); // Utils.retryingFind(By.id("configItemOption29")) // .sendKeys("\n"); // Utils.retryingFind( // By.cssSelector("input[name='cconfigItemOption24']")) // .click(); Utils.retryingFindAndSendKeys(By.id("scanBarcode"), Utils.settings .getJSONObject("一级供应室清洗篮筐1").getString("条码") + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); /** 继续灭菌 **/ frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.cssSelector("img[title='重新灭菌']")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '继续灭菌')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '灭菌中')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '完成灭菌')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("completeUserBarcode"), Utils.settings.getJSONObject("一级供应室用户").getString("条码") + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 灭菌失败后,重新灭菌成功 * */ @Test public void disinfection_failAndSuccess() { try { String text = Utils.retryingFindAndGetText(By.id("sterilizationUser")); Utils.retryingFindAndSendKeys(By.id("sterilizationPurpose"), Keys.DOWN); JSONObject sterilizerObj = Utils.settings.getJSONObject("1号高温蒸汽灭菌炉"); String sterilizerBarcode = sterilizerObj.getString("条码"); String sterilizationProcedureBarcode = ((JSONObject)sterilizerObj.getJSONArray("灭菌程序").get(0)).getString("条码"); Utils.retryingFindAndClick(By .xpath("//div[contains(text(), '器械包灭菌')]")); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), sterilizerBarcode + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), sterilizationProcedureBarcode + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), Utils.settings .getJSONObject("灭菌篮筐01").getString("条码") + "\n"); if (text.trim().equals("")) { Utils.retryingFindAndSendKeys(By.id("inputBarcode"), Utils.settings.getJSONObject("一级供应室用户").getString("条码") + "\n"); Utils.doWait(5000); } Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); Utils.doWait(1000); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.doWait(2000); Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '灭菌中')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '灭菌失败')]")); /** 登记灭菌失败的质量监测 **/ String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("formName"), Keys.DOWN); String x = (int) (Math.random() * 8 + 1) + ""; Utils.retryingFindAndClick(By .xpath("//div[contains(text(), '灭菌失败事件')]")); /** * Utils.retryingFindAndSendKeys(By.id("scanBarcode"),Utils.settings * .getJSONObject("一级供应室清洗篮筐1").getString("条码")+"\n"); **/ Utils.retryingFindAndSendKeys(By.id("tousseName"), Keys.DOWN); Utils.retryingFindAndClear(By.id("amount")); Utils.retryingFindAndSendKeys(By.id("amount"), x + "\n"); // Utils.retryingFindAndSendKeys(By.id("configItemOption102"), // Keys.DOWN); // Utils.retryingFindAndSendKeys(By.id("configItemOption102"), // "\n"); // Utils.retryingFindAndSendKeys(By.id("configItemOption103"), // "2" + "\n"); // Utils.retryingFindAndSendKeys(By.id("configItemOption98"), // "失败过程描述" + "\n"); Utils.retryingFindAndSendKeys(By.id("tousseName"), "\n"); Utils.retryingFindAndClick(By.id("saveBtn")); /** 重新灭菌 **/ frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.cssSelector("img[title='重新灭菌']")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '重新灭菌')]")); frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '灭菌中')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '完成灭菌')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); WebElement element = Utils.retryingFind(By .xpath("//button[contains(text(), '是')]")); if (element != null) { displayed = element.isDisplayed(); if (displayed) { Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); } else { Utils.retryingFindAndSendKeys( By.id("completeUserBarcode"), Utils.settings.getJSONObject("一级供应室用户").getString( "条码") + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); } } frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); element = Utils.retryingFind(By .xpath("//button[contains(text(), '灭菌确认')]")); displayed = false; if (element != null) { displayed = element.isDisplayed(); if (displayed) { confirm_One(); } } element = Utils.retryingFind(By .xpath("//button[contains(text(), '灭菌卸载')]")); displayed = false; if (element != null) { displayed = element.isDisplayed(); if (displayed) { confirm_One(); } } } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 省医灭菌失败后,重新灭菌成功 * */ @Test public void disinfection_gdsy_failAndSuccess1() { try { Utils.retryingFindAndSendKeys(By.id("sterilizationPurpose"), Keys.DOWN); JSONObject sterilizerObj = Utils.settings.getJSONObject("1号高温蒸汽灭菌炉"); String sterilizerBarcode = sterilizerObj.getString("条码"); String sterilizationProcedureBarcode = ((JSONObject)sterilizerObj.getJSONArray("灭菌程序").get(0)).getString("条码"); Utils.retryingFindAndClick(By .xpath("//div[contains(text(), '器械包灭菌')]")); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), sterilizerBarcode + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), sterilizationProcedureBarcode + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), Utils.settings .getJSONObject("灭菌篮筐01").getString("条码") + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), Utils.settings .getJSONObject("一级供应室用户").getString("条码") + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '灭菌中')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '灭菌失败')]")); /** 登记灭菌失败的质量监测 **/ String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("formName"), Keys.DOWN); Utils.retryingFindAndClick(By .xpath("//div[contains(text(), '湿包')]")); Utils.retryingFindAndSendKeys(By.id("material"), Keys.DOWN); Utils.retryingFindAndSendKeys(By.id("amount"), "2" + "\n"); Utils.retryingFindAndSendKeys(By.id("configItemOption34"), Keys.DOWN); Utils.retryingFindAndSendKeys(By.id("configItemOption36"), Keys.DOWN); Utils.retryingFindAndSendKeys(By.id("configItemOption35"), "2" + "\n"); Utils.retryingFindAndSendKeys(By.id("configItemOption31"), Keys.DOWN); Utils.retryingFindAndSendKeys(By.id("configItemOption33"), Keys.DOWN); Utils.retryingFindAndSendKeys(By.id("configItemOption32"), "5cm" + "\n"); Utils.retryingFindAndSendKeys(By.id("material"), "\n"); Utils.retryingFindAndSendKeys(By.id("configItemOption34"), "\n"); Utils.retryingFindAndSendKeys(By.id("configItemOption36"), "\n"); Utils.retryingFindAndSendKeys(By.id("configItemOption31"), "\n"); Utils.retryingFindAndSendKeys(By.id("configItemOption33"), "\n"); Utils.retryingFindAndClick(By .cssSelector("input[name='cconfigItemOption37']")); Utils.retryingFindAndSendKeys(By.id("configItemOption41"), "32" + "\n"); Utils.retryingFindAndSendKeys(By.id("configItemOption42"), "23" + "\n"); Utils.retryingFindAndSendKeys(By.id("configItemOption40"), "整改措施" + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); /** 重新灭菌 **/ frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.cssSelector("img[title='重新灭菌']")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '重新灭菌')]")); frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '灭菌中')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '完成灭菌')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("completeUserBarcode"), Utils.settings.getJSONObject("一级供应室用户").getString("条码") + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 省医灭菌失败后,重新灭菌成功 * */ @Test public void disinfection_gdsy_failAndSuccess() { try { Utils.retryingFindAndSendKeys(By.id("sterilizationPurpose"), Keys.DOWN); JSONObject sterilizerObj = Utils.settings.getJSONObject("1号高温蒸汽灭菌炉"); String sterilizerBarcode = sterilizerObj.getString("条码"); String sterilizationProcedureBarcode = ((JSONObject)sterilizerObj.getJSONArray("灭菌程序").get(0)).getString("条码"); Utils.retryingFindAndClick(By .xpath("//div[contains(text(), '器械包灭菌')]")); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), sterilizerBarcode + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), sterilizationProcedureBarcode + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), Utils.settings .getJSONObject("灭菌篮筐01").getString("条码") + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), Utils.settings .getJSONObject("一级供应室用户").getString("条码") + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '灭菌中')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '灭菌失败')]")); /** 登记灭菌失败的质量监测 **/ String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); // Utils.retryingFindAndSendKeys(By.id("formName"),Keys.DOWN); // // Utils.retryingFind(By.xpath("//div[contains(text(), '湿包')]")) // .click(); // Utils.retryingFindAndSendKeys(By.id("material"),Keys.DOWN); // Utils.retryingFindAndSendKeys(By.id("amount"), "2" + "\n"); // Utils.retryingFindAndSendKeys(By.id("configItemOption34"), // Keys.DOWN); // Utils.retryingFindAndSendKeys(By.id("configItemOption36"), // Keys.DOWN); // Utils.retryingFindAndSendKeys(By.id("configItemOption35"), // "2" + "\n"); // Utils.retryingFindAndSendKeys(By.id("configItemOption31"), // Keys.DOWN); // Utils.retryingFindAndSendKeys(By.id("configItemOption33"), // Keys.DOWN); // Utils.retryingFindAndSendKeys(By.id("configItemOption32"), // "5cm" + "\n"); // Utils.retryingFindAndSendKeys(By.id("material"), "\n"); // Utils.retryingFind(By.id("configItemOption34")) // .sendKeys("\n"); // Utils.retryingFind(By.id("configItemOption36")) // .sendKeys("\n"); // Utils.retryingFind(By.id("configItemOption31")) // .sendKeys("\n"); // Utils.retryingFind(By.id("configItemOption33")) // .sendKeys("\n"); // Utils.retryingFind( // By.cssSelector("input[name='cconfigItemOption37']")) // .click(); // Utils.retryingFindAndSendKeys(By.id("configItemOption41"), // "32" + "\n"); // Utils.retryingFindAndSendKeys(By.id("configItemOption42"), // "23" + "\n"); // Utils.retryingFindAndSendKeys(By.id("configItemOption40"), // "整改措施" + "\n"); Utils.retryingFindAndSendKeys(By.id("scanBarcode"), Utils.settings .getJSONObject("一级供应室清洗篮筐1").getString("条码") + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); /** 重新灭菌 **/ frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.cssSelector("img[title='重新灭菌']")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '重新灭菌')]")); frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '灭菌中')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '完成灭菌')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("completeUserBarcode"), Utils.settings.getJSONObject("一级供应室用户").getString("条码") + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 外部代理灭菌没有申请人 * */ @Test public void disinfection_agent_outside_noApply() { try { Utils.driver.navigate().refresh(); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.tryToCloseWarningWindow(); Utils.retryingFindAndClick(By.id("enterpriseView")); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_enterpriseView")); Utils.retryingFindAndClick(By .xpath("//div/a/span[contains(text(), '灭菌管理')]")); Utils.retryingFindAndClick(By .xpath("//div/a/span[contains(text(), '外部代理灭菌管理')]")); frame = Utils.retryingFindAndSwitchToFrame(By.id("mainFrame")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '添加')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("scanBarcode"), Utils.settings .getJSONObject("灭菌筐02").getString("条码") + "\n"); Utils.retryingFindAndSendKeys(By.id("depart"), Keys.DOWN); String name = Utils.settings.getJSONObject("临床科室").getString("名称"); Utils.retryingFindAndClick(By .xpath("//div/div/div[contains(text(), '" + name + "')]")); Utils.retryingFindAndSendKeys(By.id("package1"), Keys.DOWN); name = Utils.settings.getJSONObject("一级供应室外部代理灭菌包1") .getString("名称"); Utils.retryingFindAndClick(By .xpath("//div/div/div[contains(text(), '" + name + "')]")); Date now = new Date(); SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd"); Utils.retryingFindAndSendKeys(By.id("sterileStartDate1"), dateFormater.format(now)); Utils.retryingFindAndSendKeys(By.id("count1"), "2" + "\n"); Utils.retryingFindAndSendKeys(By.id("package1"), Keys.DOWN); name = Utils.settings.getJSONObject("一级供应室外部代理灭菌包2") .getString("名称"); Utils.retryingFindAndClick(By .xpath("//div/div/div[contains(text(), '" + name + "')]")); Utils.retryingFindAndSendKeys(By.id("count1"), "3" + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '装配并打印标签')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); // /** 获取装配成功后的条码 **/ // Utils.barcodes = Utils.getToussesBarcodes(); // System.out.println(Utils.barcodes); // System.out.println(Utils.reBarcodes); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 外部代理灭菌没有申请人 * */ @Test public void disinfection_agent_outside() { try { Utils.driver.navigate().refresh(); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.tryToCloseWarningWindow(); Utils.retryingFindAndClick(By.id("enterpriseView")); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_enterpriseView")); Utils.retryingFindAndClick(By .xpath("//div/a/span[contains(text(), '灭菌管理')]")); Utils.retryingFindAndClick(By .xpath("//div/a/span[contains(text(), '外部代理灭菌管理')]")); frame = Utils.retryingFindAndSwitchToFrame(By.id("mainFrame")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '添加')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("scanBarcode"), Utils.settings .getJSONObject("灭菌筐02").getString("条码") + "\n"); Utils.retryingFindAndSendKeys(By.id("depart"), Keys.DOWN); String name = Utils.settings.getJSONObject("临床科室").getString("名称"); Utils.retryingFindAndClick(By .xpath("//div/div/div[contains(text(), '" + name + "')]")); name = Utils.settings.getJSONObject("一级供应室用户").getString("姓名"); Utils.retryingFindAndSendKeys(By.id("applicant"), Keys.DOWN); Utils.retryingFindAndClick(By .xpath("//div/div/div[contains(text(), '" + name + "')]")); Utils.retryingFindAndSendKeys(By.id("package1"), Keys.DOWN); name = Utils.settings.getJSONObject("一级供应室外部代理灭菌包1") .getString("名称"); Utils.retryingFindAndClick(By .xpath("//div/div/div[contains(text(), '" + name + "')]")); Date now = new Date(); SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd"); Utils.retryingFindAndSendKeys(By.id("sterileStartDate1"), dateFormater.format(now)); Utils.retryingFindAndSendKeys(By.id("count1"), "2" + "\n"); Utils.retryingFindAndSendKeys(By.id("package1"), Keys.DOWN); name = Utils.settings.getJSONObject("一级供应室外部代理灭菌包2") .getString("名称"); Utils.retryingFindAndClick(By .xpath("//div/div/div[contains(text(), '" + name + "')]")); Utils.retryingFindAndSendKeys(By.id("count1"), "3" + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '装配并打印标签')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); // /** 获取装配成功后的条码 **/ // Utils.barcodes = Utils.getToussesBarcodes(); // System.out.println(Utils.barcodes); // System.out.println(Utils.reBarcodes); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 省医外部代理灭菌 * */ @Test public void disinfection_gdsy_agent_outside() { try { Utils.driver.navigate().refresh(); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.tryToCloseWarningWindow(); Utils.retryingFindAndClick(By.id("enterpriseView")); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_enterpriseView")); Utils.retryingFindAndClick(By .xpath("//div/a/span[contains(text(), '灭菌管理')]")); Utils.retryingFindAndClick(By .xpath("//div/a/span[contains(text(), '外部代理灭菌管理')]")); frame = Utils.retryingFindAndSwitchToFrame(By.id("mainFrame")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '添加')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("depart"), Keys.DOWN); String name = Utils.settings.getJSONObject("临床科室").getString("名称"); Utils.retryingFindAndClick(By .xpath("//div/div/div[contains(text(), '" + name + "')]")); name = Utils.settings.getJSONObject("一级供应室用户").getString("姓名"); Utils.retryingFindAndSendKeys(By.id("applicant"), Keys.DOWN); Utils.retryingFindAndClick(By .xpath("//div/div/div[contains(text(), '" + name + "')]")); Utils.retryingFindAndSendKeys(By.id("package1"), Keys.DOWN); name = Utils.settings.getJSONObject("一级供应室外部代理灭菌包1") .getString("名称"); Utils.retryingFindAndClick(By .xpath("//div/div/div[contains(text(), '" + name + "')]")); Date now = new Date(); SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd"); Utils.retryingFindAndSendKeys(By.id("sterileStartDate1"), dateFormater.format(now)); Utils.retryingFindAndSendKeys(By.id("count1"), "2" + "\n"); Utils.retryingFindAndSendKeys(By.id("package1"), Keys.DOWN); name = Utils.settings.getJSONObject("一级供应室外部代理灭菌包2") .getString("名称"); Utils.retryingFindAndClick(By .xpath("//div/div/div[contains(text(), '" + name + "')]")); Utils.retryingFindAndSendKeys(By.id("count1"), "3" + "\n"); Utils.retryingFindAndSendKeys(By.id("maker"), Utils.settings .getJSONObject("一级供应室配包人").getString("姓名")); Utils.retryingFindAndSendKeys(By.id("maker"), "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '装配并打印标签')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 代理灭菌 * */ @Test public void disinfection_agent() { try { Utils.retryingFindAndClick(By.id("enterpriseView")); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_enterpriseView")); Utils.retryingFindAndClick(By .xpath("//div/a/span[contains(text(), '灭菌管理')]")); Utils.retryingFindAndClick(By .xpath("//div/a/span[contains(text(), '代理灭菌管理')]")); frame = Utils.retryingFindAndSwitchToFrame(By.id("mainFrame")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '添加')]")); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("package1"), Utils.settings .getJSONObject("一级供应室灭菌篮筐3").getString("条码") + "\n"); for (int i = 0; i < Utils.barcodes.size(); i++) { Utils.retryingFindAndSendKeys(By.id("package1"), Utils.barcodes.get(i) + "\n"); } Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '放入容器')]")); Utils.retryingFindAndSendKeys(By.id("canResendout"), Keys.DOWN); Utils.retryingFindAndClick(By .xpath("//div/div/div[contains(text(), '是')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 二级供应室灭菌成功 * */ @Test public void disinfection_secondSupplyRoom() { try { Utils.retryingFindAndSendKeys(By.id("sterilizationPurpose"), Keys.DOWN); Utils.retryingFindAndSendKeys(By.id("sterilizationPurpose"), "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), Utils.settings .getJSONObject("二级供应室灭菌炉").getString("灭菌炉条码") + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), Utils.settings .getJSONObject("二级供应室灭菌炉").getString("灭菌程序条码") + "\n"); Utils.retryingFindAndSendKeys(By.id("inputBarcode"), Utils.settings .getJSONObject("二级供应室灭菌篮筐1").getString("条码") + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '灭菌中')]")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '完成灭菌')]")); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } @AfterMethod public void after() { Utils.driver.quit(); } /** * 中大五院二级供应室灭菌完成后确认 */ public void confirm_Two() { try { WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_sterilizationRecord")); Utils.retryingFindAndClick(By .cssSelector("table[class='x-grid3-row-table']")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '灭菌确认')]")); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("completeUserBarcode1"), Utils.settings.getJSONObject("二级供应室审核人").getString("条码") + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '确认')]")); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 中大五院一级供应室灭菌完成后确认 */ public void confirm_One() { try { // WebElement frame = Utils.retryingFind(By // .id("iframe_sterilizationRecord")); // Utils.driver.switchTo().frame(frame); Utils.retryingFindAndClick(By .cssSelector("table[class='x-grid3-row-table']")); WebElement element = Utils.retryingFind(By .xpath("//button[contains(text(), '灭菌卸载')]")); displayed = false; if (element != null) { displayed = element.isDisplayed(); if (displayed) { Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '灭菌卸载')]")); } } else { Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '灭菌确认')]")); } String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("completeUserBarcode1"), Utils.settings.getJSONObject("一级供应室审核人").getString("条码") + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '确认')]")); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } }