package test_4_1; import org.testng.annotations.AfterMethod; import org.testng.annotations.Test; import org.testng.annotations.BeforeMethod; import org.testng.AssertJUnit; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.Keys; import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; import test_4_1.tools.Utils; /** * @author cherry 2016-03-02 * */ public class Assemble { 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("packing"))) .perform(); Utils.retryingFind( By.linkText(Utils.settings.getJSONObject("一级供应室装配组") .getString("名称1"))).click(); // Utils.retryingFind(By.linkText(Utils.settings.getJSONObject("二级供应室装配组").getString("名称1"))).click(); WebElement frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 装配失败 */ @Test public void assemble_fail() { try { Utils.retryingFind( By.cssSelector("input[name='basketBarcodeInput']")) .sendKeys("error" + "\n"); Utils.retryingFind(By.id("save_print")).click(); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 装配成功,输入篮筐条码 */ @Test public void assemble_success1() { try { scan(); Utils.retryingFind( By.cssSelector("input[name='basketBarcodeInput']")) .sendKeys( Utils.settings.getJSONObject("一级供应室清洗篮筐4") .getString("条码") + "\n"); // Utils.retryingFind( // By.cssSelector("input[name='basketBarcodeInput']")) // .sendKeys( // Utils.settings.getJSONObject("一级供应室清洗篮筐1") // .getString("条码") + "\n"); // Utils.retryingFind(By.id("checkAllTaskNode-inputRow")).click(); editTreeGridCell("basketTreeGrid", 0, 2); WebElement element = Utils.retryingFind(By.id("sterilingType")); Actions click = new Actions(Utils.driver); String name = Utils.settings.getJSONObject("灭菌程序").getString("名称1"); if (element != null) { displayed = element.isDisplayed(); if (displayed) { element.click(); click.click( Utils.retryingFind(By .xpath("//div/ul/li[contains(text(), '" + name + "')]"))).perform(); } } click.click(Utils.retryingFind(By.id("packageType-triggerWrap"))) .perform(); name = Utils.settings.getJSONObject("包装类型").getString("名称2"); click.click( Utils.retryingFind(By .xpath("//div/ul/li[contains(text(), '" + name + "')]"))).perform(); Alert alertBox = Utils.driver.switchTo().alert(); alertBox.accept(); Utils.retryingFind(By.id("save_print")).click(); /** 获取装配成功后的条码 **/ 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 assemble_forgeinSet() { try { scan(); Utils.retryingFind( By.cssSelector("input[name='basketBarcodeInput']")) .sendKeys( Utils.settings.getJSONObject("一级供应室清洗篮筐4") .getString("条码") + "\n"); Actions click = new Actions(Utils.driver); Utils.retryingFind(By.id("checkAllTaskNode-inputRow")).click(); String name = Utils.settings.getJSONObject("灭菌程序").getString("名称1"); WebElement element = Utils.retryingFind(By .id("sterilingType-triggerWrap")); if (element != null) { displayed = element.isDisplayed(); if (displayed) { element.click(); click.click( Utils.retryingFind(By .xpath("//div/ul/li[contains(text(), '" + name + "')]"))).perform(); } } click.click(Utils.retryingFind(By.id("packageType-triggerWrap"))) .perform(); name = Utils.settings.getJSONObject("包装类型").getString("名称2"); click.click( Utils.retryingFind(By .xpath("//div/ul/li[contains(text(), '" + name + "')]"))).perform(); Alert alertBox = Utils.driver.switchTo().alert(); alertBox.accept(); Utils.retryingFind(By.id("save_print")).click(); /** 获取装配成功后的条码 **/ 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 assemble_zdwy_dressing() { try { Utils.driver.navigate().refresh(); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.tryToCloseWarningWindow(); Actions moveover = new Actions(Utils.driver); moveover.moveToElement(Utils.retryingFind(By.id("packing"))) .perform(); Utils.retryingFind( By.linkText(Utils.settings.getJSONObject("一级供应室装配组") .getString("名称2"))).click(); WebElement frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); // 编辑装配的物品的数量 Actions action = new Actions(Utils.driver); String location = Utils.settings.getJSONObject("装配定位").getString( "定位1"); int a = Integer.valueOf(location).intValue(); editTreeGridCell("waitPackingTreeGrid", a, 1); action.sendKeys("2" + "\n").perform(); // 扫描配包人条码 Utils.retryingFind(By.cssSelector("input[name='operatorBarcode']")) .sendKeys( Utils.settings.getJSONObject("一级供应室配包人").getString( "条码") + "\n"); Utils.retryingFind(By.id("sterilingType")).click(); String name = Utils.settings.getJSONObject("灭菌程序").getString("名称1"); Utils.retryingFind( By.xpath("//div/ul/li[contains(text(), '" + name + "')]")) .click(); Utils.retryingFind(By.id("packageType-triggerWrap")).click(); name = Utils.settings.getJSONObject("包装类型").getString("名称1"); Utils.retryingFind( By.xpath("//div/ul/li[contains(text(), '" + name + "')]")) .click(); Alert alertBox = Utils.driver.switchTo().alert(); alertBox.accept(); Utils.retryingFind(By.id("save_print")).click(); /** 获取装配成功后的条码 **/ 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 assemble_dressing() { try { // Utils.driver.navigate().refresh(); // String currentwindowhandle = Utils.driver.getWindowHandle(); // Utils.driver.switchTo().window(currentwindowhandle); // Utils.tryToCloseWarningWindow(); // Actions moveover = new Actions(Utils.driver); // moveover.moveToElement(Utils.retryingFind(By.id("packing"))) // .perform(); // // Utils.retryingFind( // By.linkText(Utils.settings.getJSONObject("一级供应室装配组") // .getString("名称1"))).click(); // Utils.driver.switchTo().defaultContent(); WebElement frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); // 编辑装配的物品的数量 Actions action = new Actions(Utils.driver); for (int i = 0; i < 6; i++) { editTreeGridCell("waitPackingTreeGrid", i, 0); if (action.toString().endsWith("一级敷料")) { editTreeGridCell("waitPackingTreeGrid", i, 1); action.sendKeys("2" + "\n").perform(); editTreeGridCell("waitPackingTreeGrid", i, 1); action.sendKeys("2" + "\n").perform(); break; } } // String location = Utils.settings.getJSONObject("装配定位").getString( // "定位1"); // int a = Integer.valueOf(location).intValue(); // // editTreeGridCell("waitPackingTreeGrid", a, 1); // action.sendKeys("2" + "\n").perform(); // scan(); WebElement element = Utils.retryingFind(By.id("sterilingType")); String name = Utils.settings.getJSONObject("灭菌程序").getString("名称1"); if (element != null) { displayed = element.isDisplayed(); if (displayed) { element.click(); Utils.retryingFind( By.xpath("//div/ul/li[contains(text(), '" + name + "')]")).click(); } } Utils.retryingFind(By.id("packageType-triggerWrap")).click(); name = Utils.settings.getJSONObject("包装类型").getString("名称2"); Utils.retryingFind( By.xpath("//div/ul/li[contains(text(), '" + name + "')]")) .click(); Alert alertBox = Utils.driver.switchTo().alert(); alertBox.accept(); Utils.retryingFind(By.id("save_print")).click(); /** 获取装配成功后的条码 **/ 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 assemble_Scrap() { try { Utils.retryingFind(By.id("addDamageMaterial")).click(); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFind(By.xpath("//button[contains(text(), '确定')]")) .click(); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 装配自定义器械 */ @Test public void assemble_CustomSet() { try { Utils.driver.switchTo().defaultContent(); WebElement frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); // 编辑装配的物品的数量 // Actions action = new Actions(Utils.driver); for (int i = 0; i < 6; i++) { editTreeGridCell("waitPackingTreeGrid", i, 0); WebElement a = Utils.retryingFind(By .xpath("//span[contains(text(), 'zdy')]")); boolean displayed = false; if (a != null) { displayed = a.isDisplayed(); if (displayed) { assemble_success1(); break; } } else { break; } } } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 装配带标识牌的器械包并补充对应的丢失 */ @Test public void assemble_SignboardAndDrop() { try { Utils.driver.navigate().refresh(); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); // Utils.tryToCloseWarningWindow(); Actions moveover = new Actions(Utils.driver); moveover.moveToElement(Utils.retryingFind(By.id("packing"))) .perform(); Utils.retryingFind( By.linkText(Utils.settings.getJSONObject("一级供应室装配组") .getString("名称1"))).click(); WebElement frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); Utils.retryingFind( By.cssSelector("input[name='basketBarcodeInput']")) .sendKeys( Utils.settings.getJSONObject("一级供应室清洗篮筐2") .getString("条码") + "\n"); Actions action = new Actions(Utils.driver); String location = Utils.settings.getJSONObject("装配定位").getString( "定位2"); int a = Integer.valueOf(location).intValue(); editTreeGridCell("basketTreeGrid", a, 0); action.click( Utils.retryingFind(By .cssSelector("img[role='presentation']"))) .perform(); location = Utils.settings.getJSONObject("装配定位").getString("定位2"); a = Integer.valueOf(location).intValue(); editTreeGridCell("basketTreeGrid", a, 3); action.click( Utils.retryingFind(By.cssSelector("input[value='丢失']"))) .perform(); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFind(By.cssSelector("input[value='补充打印']")).click(); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); String id = Utils.settings.getJSONObject("一级供应室器械包1").getString( "标识牌条码2id"); a = Integer.valueOf(id).intValue(); boolean displayed = false; WebElement element = Utils.retryingFind(By .cssSelector("tr[data-recordid='" + a + "']")); String b = null; if (element != null) { displayed = element.isDisplayed(); if (displayed) { Utils.retryingFind( By.cssSelector("tr[data-recordid='" + a + "']")) .click(); Utils.retryingFind( By.cssSelector("tr[data-recordid='" + a + "']")) .sendKeys(Keys.DOWN); id = Utils.settings.getJSONObject("一级供应室器械包1").getString( "标识牌条码3id"); a = Integer.valueOf(id).intValue(); Utils.retryingFind( By.cssSelector("tr[data-recordid='" + a + "']")) .click(); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFind( By.xpath("//span/span/span[contains(text(), '补充并打印')]")) .click(); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFind( By.xpath("//span/span[contains(text(), '是')]")) .click(); // /** 获取补充成功后的标识牌条码 **/ // Utils.barcodes = Utils.getToussesBarcodes(); // System.out.println("本次装配条码:"+Utils.barcodes); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); id = Utils.settings.getJSONObject("一级供应室器械包1").getString( "标识牌条码3id"); a = Integer.valueOf(id).intValue(); WebElement ab = Utils.retryingFind(By .cssSelector("tr[data-recordid='" + a + "']")); ab.click(); b = ab.getText(); b = b.trim(); b = b.substring(2, 11); System.out.println("补充的标示牌条码:" + b); Utils.retryingFind( By.xpath("//span/span/span[contains(text(), '取消')]")) .click(); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFind( By.xpath("//button[contains(text(), '确定')]")) .click(); // Utils.driver.navigate().refresh(); // currentwindowhandle = Utils.driver.getWindowHandle(); // Utils.driver.switchTo().window(currentwindowhandle); // Utils.tryToCloseWarningWindow(); // moveover = new Actions(Utils.driver); // moveover.moveToElement(Utils.retryingFind(By.id("packing"))) // .perform(); // // Utils.retryingFind( // By.linkText(Utils.settings.getJSONObject("一级供应室装配组") // .getString("名称5"))).click(); // frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); Utils.retryingFind( By.cssSelector("input[name='basketBarcodeInput']")) .sendKeys( Utils.settings.getJSONObject("一级供应室清洗篮筐2") .getString("条码") + "\n"); Utils.retryingFind( By.cssSelector("input[name='basketBarcodeInput']")) .sendKeys( Utils.settings.getJSONObject("一级供应室清洗篮筐1") .getString("条码") + "\n"); Utils.retryingFind( By.cssSelector("input[name='basketBarcodeInput']")) .sendKeys( Utils.settings.getJSONObject("一级供应室清洗篮筐3") .getString("条码") + "\n"); action = new Actions(Utils.driver); editTreeGridCell("basketTreeGrid", 0, 0); action.click( Utils.retryingFind(By .cssSelector("img[role='presentation']"))) .perform(); } } else { Utils.retryingFind( By.xpath("//span/span/span[contains(text(), '取消')]")) .click(); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFind(By.xpath("//button[contains(text(), '取消')]")) .click(); } String signNum = Utils.settings.getJSONObject("一级供应室器械包1") .getString("标识牌条码1"); displayed = false; element = Utils.retryingFind(By.id("scanIdCardBarcode-inputEl")); if (element != null) { displayed = element.isDisplayed(); if (displayed) { Utils.retryingFind(By.id("scanIdCardBarcode-inputEl")) .sendKeys(signNum + "\n"); scan(); element = Utils.retryingFind(By.id("sterilingType")); String name = Utils.settings.getJSONObject("灭菌程序") .getString("名称1"); if (element != null) { displayed = element.isDisplayed(); if (displayed) { element.click(); Utils.retryingFind( By.xpath("//div/ul/li[contains(text(), '" + name + "')]")).click(); } } Utils.retryingFind(By.id("packageType-triggerWrap")) .click(); name = Utils.settings.getJSONObject("包装类型") .getString("名称2"); Utils.retryingFind( By.xpath("//div/ul/li[contains(text(), '" + name + "')]")).click(); Alert alertBox = Utils.driver.switchTo().alert(); alertBox.accept(); Utils.retryingFind(By.id("save_print")).click(); /** 获取装配成功后的条码 **/ Utils.barcodes = Utils.getToussesBarcodes(); System.out.println("本次装配条码:" + Utils.barcodes); System.out.println("所有装配条码:" + Utils.reBarcodes); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); signNum = Utils.settings.getJSONObject("一级供应室器械包1") .getString("标识牌条码2"); Utils.retryingFind(By.id("scanIdCardBarcode-inputEl")) .sendKeys(signNum + "\n"); scan(); Utils.retryingFind(By.id("save_print")).click(); /** 获取装配成功后的条码 **/ Utils.barcodes = Utils.getToussesBarcodes(); System.out.println("本次装配条码:" + Utils.barcodes); System.out.println("所有装配条码:" + Utils.reBarcodes); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); signNum = b; Utils.retryingFind(By.id("scanIdCardBarcode-inputEl")) .sendKeys(signNum + "\n"); scan(); Utils.retryingFind(By.id("save_print")).click(); /** 获取装配成功后的条码 **/ Utils.barcodes = Utils.getToussesBarcodes(); System.out.println("本次装配条码:" + Utils.barcodes); System.out.println("所有装配条码:" + Utils.reBarcodes); } } else { frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); action = new Actions(Utils.driver); location = Utils.settings.getJSONObject("装配定位") .getString("定位2"); a = Integer.valueOf(location).intValue(); editTreeGridCell("waitPackingTreeGrid", a, 3); Utils.retryingFind( By.xpath("//span/span[contains(text(), '删除')]")) .click(); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFind( By.xpath("//span/span[contains(text(), '是')]")).click(); } } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 报损补充 */ @Test public void assemble_DropAndScrap() { try { Utils.retryingFind(By.id("addDamageMaterial")).click(); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFind(By.id("inputText")).sendKeys( Utils.settings.getJSONObject("一级供应室清洗篮筐4").getString("条码") + "\n"); Utils.retryingFind(By.xpath("//button[contains(text(), '确定')]")) .click(); Utils.driver.navigate().refresh(); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.tryToCloseWarningWindow(); Actions moveover = new Actions(Utils.driver); moveover.moveToElement(Utils.retryingFind(By.id("packing"))) .perform(); Utils.retryingFind( By.linkText(Utils.settings.getJSONObject("一级供应室装配组") .getString("名称1"))).click(); WebElement frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); // 丢失补充 Utils.retryingFind( By.cssSelector("input[name='basketBarcodeInput']")) .sendKeys( Utils.settings.getJSONObject("一级供应室清洗篮筐3") .getString("条码") + "\n"); Actions action = new Actions(Utils.driver); editTreeGridCell("basketTreeGrid", 0, 0); action.click( Utils.retryingFind(By .cssSelector("img[role='presentation']"))) .perform(); editTreeGridCell("basketTreeGrid", 1, 3); action.click( Utils.retryingFind(By.cssSelector("input[value='丢失']"))) .perform(); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFind(By.id("inputText")).sendKeys( Utils.settings.getJSONObject("一级供应室清洗篮筐4").getString("条码") + "\n"); Utils.retryingFind(By.xpath("//button[contains(text(), '确定')]")) .click(); Utils.driver.navigate().refresh(); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.tryToCloseWarningWindow(); moveover = new Actions(Utils.driver); moveover.moveToElement(Utils.retryingFind(By.id("packing"))) .perform(); Utils.retryingFind( By.linkText(Utils.settings.getJSONObject("一级供应室装配组") .getString("名称1"))).click(); frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); Utils.retryingFind(By.cssSelector("input[name='operatorBarcode']")) .sendKeys( Utils.settings.getJSONObject("一级供应室配包人").getString( "条码") + "\n"); Utils.retryingFind( By.cssSelector("input[name='basketBarcodeInput']")) .sendKeys( Utils.settings.getJSONObject("一级供应室清洗篮筐3") .getString("条码") + "\n"); Utils.retryingFind( By.cssSelector("input[name='basketBarcodeInput']")) .sendKeys( Utils.settings.getJSONObject("一级供应室清洗篮筐1") .getString("条码") + "\n"); Utils.retryingFind(By.id("checkAllTaskNode-inputRow")).click(); Utils.retryingFind(By.id("sterilingType-triggerWrap")).click(); Actions click = new Actions(Utils.driver); String name = Utils.settings.getJSONObject("灭菌程序").getString("名称1"); click.click( Utils.retryingFind(By .xpath("//div/ul/li[contains(text(), '" + name + "')]"))).perform(); Utils.retryingFind(By.id("packageType-triggerWrap")).click(); name = Utils.settings.getJSONObject("包装类型").getString("名称1"); click.click( Utils.retryingFind(By .xpath("//div/ul/li[contains(text(), '" + name + "')]"))).perform(); Alert alertBox = Utils.driver.switchTo().alert(); alertBox.accept(); Utils.retryingFind(By.id("save_print")).click(); /** 获取装配成功后的条码 **/ 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 assemble_zdwy_unpackForgein() { try { Utils.driver.navigate().refresh(); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.tryToCloseWarningWindow(); Actions moveover = new Actions(Utils.driver); moveover.moveToElement(Utils.retryingFind(By.id("packing"))) .perform(); Utils.retryingFind( By.linkText(Utils.settings.getJSONObject("二级供应室装配组") .getString("名称1"))).click(); WebElement frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); Utils.retryingFind( By.cssSelector("input[name='basketBarcodeInput']")) .sendKeys( Utils.settings.getJSONObject("二级供应室清洗篮筐1") .getString("条码") + "\n"); Actions action = new Actions(Utils.driver); editTreeGridCell("basketTreeGrid", 0, 0); action.click( Utils.retryingFind(By .cssSelector("img[role='presentation']"))) .perform(); editTreeGridCell("basketTreeGrid", 1, 3); action.click( Utils.retryingFind(By.cssSelector("input[value='拆包']"))) .perform(); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFind(By.cssSelector("input[name='sterilingType']")) .click(); String name = Utils.settings.getJSONObject("灭菌程序").getString("名称1"); action.click( Utils.retryingFind(By .xpath("//div/div/ul/li[contains(text(), '" + name + "')]"))).perform(); // 拆分第一个包 WebElement leftTable = Utils.retryingFind(By .cssSelector("tr[class='x4-grid-row x4-grid-data-row']")); action.click(leftTable).perform(); action.click( Utils.retryingFind(By .xpath("//span/span/span[contains(text(), '>>')]"))) .perform(); action.click( Utils.retryingFind(By .xpath("//span/span/span[contains(text(), '拆分')]"))) .perform(); // 拆分第二个包 action.click( Utils.retryingFind(By .xpath("//span/span/span[contains(text(), '>>>>')]"))) .perform(); action.click( Utils.retryingFind(By .xpath("//span/span/span[contains(text(), '拆分')]"))) .perform(); // 点击装配按钮 action.click( Utils.retryingFind(By .xpath("//span/span/span[contains(text(), '装配')]"))) .perform(); // 必须加上如下的切换代码,否则获取装配的器械包的条码的javascript语句执行会报异常错误 frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); /** 获取装配成功后的条码 **/ 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 assemble_unpackForgein() { try { Utils.driver.navigate().refresh(); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); // Utils.tryToCloseWarningWindow(); Actions moveover = new Actions(Utils.driver); moveover.moveToElement(Utils.retryingFind(By.id("packing"))) .perform(); Utils.retryingFind( By.linkText(Utils.settings.getJSONObject("一级供应室装配组") .getString("名称3"))).click(); WebElement frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); Utils.retryingFind( By.cssSelector("input[name='basketBarcodeInput']")) .sendKeys( Utils.settings.getJSONObject("一级供应室清洗篮筐4") .getString("条码") + "\n"); Actions action = new Actions(Utils.driver); editTreeGridCell("basketTreeGrid", 0, 0); action.click( Utils.retryingFind(By .cssSelector("img[role='presentation']"))) .perform(); editTreeGridCell("basketTreeGrid", 1, 3); action.click( Utils.retryingFind(By.cssSelector("input[value='拆包']"))) .perform(); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFind(By.cssSelector("input[name='sterilingType']")) .click(); String name = Utils.settings.getJSONObject("灭菌程序").getString("名称1"); action.click( Utils.retryingFind(By .xpath("//div/div/ul/li[contains(text(), '" + name + "')]"))).perform(); // 拆分第一个包 WebElement leftTable = Utils.retryingFind(By .cssSelector("tr[class='x4-grid-row x4-grid-data-row']")); action.click(leftTable).perform(); action.click( Utils.retryingFind(By .xpath("//span/span/span[contains(text(), '>>')]"))) .perform(); action.click( Utils.retryingFind(By .xpath("//span/span/span[contains(text(), '拆分')]"))) .perform(); // 拆分第二个包 action.click( Utils.retryingFind(By .xpath("//span/span/span[contains(text(), '>>>>')]"))) .perform(); action.click( Utils.retryingFind(By .xpath("//span/span/span[contains(text(), '拆分')]"))) .perform(); // 扫描配包人条码 Utils.retryingFind(By.cssSelector("input[name='packerBarcode']")) .sendKeys( Utils.settings.getJSONObject("一级供应室配包人").getString( "条码") + "\n"); boolean displayed = false; WebElement element = Utils.retryingFind(By .cssSelector("input[name='reviewerBarcode']")); if (element != null) { displayed = element.isDisplayed(); } if (displayed) { // 扫描审核人条码 Utils.retryingFind( By.cssSelector("input[name='reviewerBarcode']")) .sendKeys( Utils.settings.getJSONObject("一级供应室审核人") .getString("条码") + "\n"); } // 点击装配按钮 action.click( Utils.retryingFind(By .xpath("//span/span/span[contains(text(), '装配')]"))) .perform(); // 必须加上如下的切换代码,否则获取装配的器械包的条码的javascript语句执行会报异常错误 frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); /** 获取装配成功后的条码 **/ 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 assemble_alter() { Utils.driver.switchTo().defaultContent(); Actions action = new Actions(Utils.driver); action.click(Utils.retryingFind(By.id("tab-1078-btnInnerEl"))) .perform(); action.click( Utils.retryingFind(By .cssSelector("div[class='x4-grid-cell-inner ']"))) .perform(); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); action.click( Utils.retryingFind(By .cssSelector("div[class='x-grid3-row-checker']"))) .perform(); action.click( Utils.retryingFind(By .xpath("//tbody/tr/td/em/button[contains(text(), '修改')]"))) .perform(); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFind(By.id("packer2")).sendKeys(Keys.DOWN); String name = Utils.settings.getJSONObject("一级供应室配包人").getString("名字"); Utils.retryingFind( By.xpath("//div/div/div[contains(text(), '" + name + "')]")) .click(); Utils.retryingFind(By.id("reviewer2")).sendKeys(Keys.DOWN); name = Utils.settings.getJSONObject("一级供应室审核人").getString("名字"); Utils.retryingFind( By.xpath("//div/div/div[contains(text(), '" + name + "')]")) .click(); Utils.retryingFind(By.id("sterilingType2")).click(); name = Utils.settings.getJSONObject("灭菌程序").getString("名称2"); Utils.retryingFind( By.xpath("//div/div/div[contains(text(), '" + name + "')]")) .click(); Utils.retryingFind(By.id("packageType2")).click(); name = Utils.settings.getJSONObject("包装类型").getString("名称2"); Utils.retryingFind( By.xpath("//div/div/div[contains(text(), '" + name + "')]")) .click(); Utils.retryingFind( By.cssSelector("img[src='/ext/resources/images/default/s.gif']")) .click(); Utils.retryingFind( By.xpath("//tbody/tr/td/a/em/span[contains(text(), '20')]")) .click(); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFind( By.xpath("//tbody/tr/td/em/button[contains(text(), '确定')]")) .click(); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); action.click( Utils.retryingFind(By .cssSelector("div[class='x-grid3-row-checker']"))) .perform(); action.click( Utils.retryingFind(By .xpath("//tbody/tr/td/em/button[contains(text(), '打印')]"))) .perform(); } /** * 二级供应装配器械 ***/ @Test public void assemble_secondSupplyRoomSet() { try { String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); WebElement frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); Utils.retryingFind(By.cssSelector("input[name='operatorBarcode']")) .sendKeys( Utils.settings.getJSONObject("二级供应室审核人").getString( "条码") + "\n"); Utils.retryingFind( By.cssSelector("input[name='basketBarcodeInput']")) .sendKeys( Utils.settings.getJSONObject("二级供应室清洗篮筐1") .getString("条码") + "\n"); Utils.retryingFind(By.id("checkAllTaskNode-inputRow")).click(); Utils.retryingFind(By.id("sterilingType-triggerWrap")).click(); Actions click = new Actions(Utils.driver); String name = Utils.settings.getJSONObject("灭菌程序").getString("名称1"); click.click( Utils.retryingFind(By .xpath("//div/ul/li[contains(text(), '" + name + "')]"))).perform(); click.click(Utils.retryingFind(By.id("packageType-triggerWrap"))) .perform(); name = Utils.settings.getJSONObject("包装类型").getString("名称1"); click.click( Utils.retryingFind(By .xpath("//div/ul/li[contains(text(), '" + name + "')]"))).perform(); Alert alertBox = Utils.driver.switchTo().alert(); alertBox.accept(); Utils.retryingFind(By.id("save_print")).click(); /** 获取装配成功后的条码 **/ 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 assemble_secondSupplyRoomdressing() { try { Actions moveover = new Actions(Utils.driver); moveover.moveToElement(Utils.retryingFind(By.id("packing"))) .perform(); Utils.retryingFind( By.linkText(Utils.settings.getJSONObject("二级供应室装配组") .getString("名称2"))).click(); WebElement frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); // 编辑装配的物品的数量 Actions action = new Actions(Utils.driver); editTreeGridCell("waitPackingTreeGrid", 7, 1); action.sendKeys("2" + "\n").perform(); Utils.retryingFind(By.cssSelector("input[name='operatorBarcode']")) .sendKeys( Utils.settings.getJSONObject("二级供应室配包人").getString( "条码") + "\n"); Utils.retryingFind(By.id("save_print")).click(); /** 获取装配成功后的条码 **/ Utils.barcodes = Utils.getToussesBarcodes(); Utils.resendout = Utils.barcodes; System.out.println("所有装配条码:" + Utils.reBarcodes); System.out.println("本次装配条码:" + Utils.barcodes); System.out.println(Utils.resendout); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 自定义装配 ***/ @Test public void assemble_custom() { try { Utils.driver.navigate().refresh(); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); // Utils.tryToCloseWarningWindow(); Utils.retryingFind(By.id("enterpriseView")).click(); WebElement frame = Utils.retryingFind(By .id("iframe_enterpriseView")); Utils.driver.switchTo().frame(frame); Utils.retryingFind( By.xpath("//div/a/span[contains(text(), '装配管理')]")).click(); Utils.retryingFind( By.xpath("//div/a/span[contains(text(), '自定义装配')]")) .click(); frame = Utils.retryingFind(By.id("mainFrame")); Utils.driver.switchTo().frame(frame); scan(); Utils.retryingFind(By.id("tousseName")).sendKeys(Keys.DOWN); String name = Utils.settings.getJSONObject("一级供应室器械包").getString( "名称"); Utils.retryingFind( By.xpath("//div/div/div[contains(text(), '" + name + "')]")) .click(); Utils.retryingFind(By.id("packAmount")).clear(); Utils.retryingFind(By.id("packAmount")).sendKeys("2" + "\n"); Utils.retryingFind( By.xpath("//tbody/tr/td/em/button[contains(text(), '装配并打印标签')]")) .click(); /** 获取装配成功后的条码 **/ // for (int i = 0; i < 3; i++) { // Utils.barcodes = Utils.getToussesBarcodes(); // System.out.println("本次装配条码:"+Utils.barcodes); // } } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 二级供应装配消毒物品 ***/ @Test public void assemble_secondSupplyRoomsterilize() { try { Utils.driver.navigate().refresh(); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.tryToCloseWarningWindow(); Actions moveover = new Actions(Utils.driver); moveover.moveToElement(Utils.retryingFind(By.id("packing"))) .perform(); Utils.retryingFind( By.linkText(Utils.settings.getJSONObject("二级供应室装配组") .getString("名称3"))).click(); WebElement frame = Utils.retryingFind(By.id("iframe_packing")); Utils.driver.switchTo().frame(frame); Utils.retryingFind( By.cssSelector("input[name='basketBarcodeInput']")) .sendKeys( Utils.settings.getJSONObject("二级供应室清洗篮筐1") .getString("条码") + "\n"); Utils.retryingFind(By.id("checkAllTaskNode-inputRow")).click(); Utils.retryingFind(By.cssSelector("input[name='operatorBarcode']")) .sendKeys( Utils.settings.getJSONObject("二级供应室配包人").getString( "条码") + "\n"); Utils.retryingFind(By.id("sterilingType-triggerWrap")).click(); Actions click = new Actions(Utils.driver); String name = Utils.settings.getJSONObject("灭菌程序").getString("名称1"); click.click( Utils.retryingFind(By .xpath("//div/ul/li[contains(text(), '" + name + "')]"))).perform(); click.click(Utils.retryingFind(By.id("packageType-triggerWrap"))) .perform(); name = Utils.settings.getJSONObject("包装类型").getString("名称1"); click.click( Utils.retryingFind(By .xpath("//div/ul/li[contains(text(), '" + name + "')]"))).perform(); Alert alertBox = Utils.driver.switchTo().alert(); alertBox.accept(); Utils.retryingFind(By.id("save_print")).click(); /** 获取装配成功后的条码 **/ Utils.barcodes = Utils.getToussesBarcodes(); System.out.println("本次装配条码:" + Utils.barcodes); System.out.println("所有装配条码:" + Utils.reBarcodes); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } @AfterMethod public void after() { Utils.driver.quit(); } /** * 编辑树形表格的单元格,行、列的值均从0开始计算。 装配界面左下角的grid名称为waitPackingTreeGrid, * 左上角的grid名称为basketTreeGrid * * @param treeGridName * 表格的名字 * @param row * 单元格所在的行 * @param column * 单元格所在的列 */ private void editTreeGridCell(String treeGridName, int row, int column) { JavascriptExecutor js = (JavascriptExecutor) Utils.driver; String enterEdit = "var grid = Ext4.getCmp('" + treeGridName + "');" + "grid.getSelectionModel().select(" + row + ");" + "grid.cellEditing.startEditByPosition({row: " + row + ",column: " + column + "});"; js.executeScript(enterEdit); } /** * 省医装配扫描配包人和审核人 */ public void scan() { try { boolean displayed = false; WebElement element = Utils.retryingFind(By .cssSelector("input[name='reviewerBarcode']")); String text = Utils.retryingFind( By.cssSelector("input[name='operator']")).getText(); if (text.isEmpty()) { Utils.retryingFind( By.cssSelector("input[name='operatorBarcode']")) .sendKeys( Utils.settings.getJSONObject("一级供应室配包人") .getString("条码") + "\n"); if (element != null) { displayed = element.isDisplayed(); if (displayed) { Utils.retryingFind( By.cssSelector("input[name='reviewerBarcode']")) .sendKeys( Utils.settings .getJSONObject("一级供应室审核人") .getString("条码") + "\n"); } } } } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } }