package test_4_1; import java.util.NoSuchElementException; import java.util.concurrent.TimeUnit; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; 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.ExpectedConditions; import org.openqa.selenium.support.ui.FluentWait; import org.openqa.selenium.support.ui.Wait; import org.testng.AssertJUnit; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; 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.retryingFindAndClick(By.linkText(Utils.settings .getJSONObject("一级供应室装配组").getString("名称2"))); // Utils.retryingFindAndClick(By.linkText(Utils.settings.getJSONObject("二级供应室装配组").getString("名称1"))); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_packing")); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 装配失败 */ @Test public void assemble_fail() { try { Utils.retryingFindAndSendKeys( By.cssSelector("input[name='basketBarcodeInput']"), "error" + "\n"); Utils.retryingFindAndClick(By.id("save_print")); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 装配成功,输入篮筐条码 */ @Test public void assemble_success1() { try { scan(); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='basketBarcodeInput']"), Utils.settings.getJSONObject("一级供应室清洗篮筐4").getString("条码") + "\n"); // Utils.retryingFind( // By.cssSelector("input[name='basketBarcodeInput']")) // .sendKeys( // Utils.settings.getJSONObject("一级供应室清洗篮筐1") // .getString("条码") + "\n"); // Utils.retryingFindAndClick(By.id("checkAllTaskNode-inputRow")); editTreeGridCell("basketTreeGrid", 0, 2); 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.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); } } Utils.retryingFindAndClick(By.id("packageType-triggerWrap")); name = Utils.settings.getJSONObject("包装类型").getString("名称1"); Utils.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); Wait wait = new FluentWait(Utils.driver) .withTimeout(5000, TimeUnit.MILLISECONDS) .pollingEvery(250, TimeUnit.MILLISECONDS) .ignoring(NoSuchElementException.class) .ignoring(StaleElementReferenceException.class); wait.until(ExpectedConditions.alertIsPresent()); Alert alertBox = Utils.driver.switchTo().alert(); alertBox.accept(); Utils.retryingFindAndClick(By.id("save_print")); /** 获取装配成功后的条码 **/ 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.retryingFindAndSendKeys( By.cssSelector("input[name='basketBarcodeInput']"), Utils.settings.getJSONObject("一级供应室清洗篮筐4").getString("条码") + "\n"); Utils.retryingFindAndClick(By.id("checkAllTaskNode-inputRow")); 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(); Utils.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); } } Utils.retryingFindAndClick(By.id("packageType-triggerWrap")); name = Utils.settings.getJSONObject("包装类型").getString("名称1"); Utils.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); Wait wait = new FluentWait(Utils.driver) .withTimeout(5000, TimeUnit.MILLISECONDS) .pollingEvery(250, TimeUnit.MILLISECONDS) .ignoring(NoSuchElementException.class) .ignoring(StaleElementReferenceException.class); wait.until(ExpectedConditions.alertIsPresent()); Alert alertBox = Utils.driver.switchTo().alert(); alertBox.accept(); Utils.retryingFindAndClick(By.id("save_print")); /** 获取装配成功后的条码 **/ 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.retryingFindAndClick(By.linkText(Utils.settings .getJSONObject("一级供应室装配组").getString("名称2"))); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_packing")); // 编辑装配的物品的数量 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.retryingFindAndSendKeys( By.cssSelector("input[name='operatorBarcode']"), Utils.settings.getJSONObject("一级供应室配包人").getString("条码") + "\n"); Utils.retryingFindAndClick(By.id("sterilingType")); String name = Utils.settings.getJSONObject("灭菌程序").getString("名称1"); Utils.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); Utils.retryingFindAndClick(By.id("packageType-triggerWrap")); name = Utils.settings.getJSONObject("包装类型").getString("名称1"); Utils.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); Wait wait = new FluentWait(Utils.driver) .withTimeout(5000, TimeUnit.MILLISECONDS) .pollingEvery(250, TimeUnit.MILLISECONDS) .ignoring(NoSuchElementException.class) .ignoring(StaleElementReferenceException.class); wait.until(ExpectedConditions.alertIsPresent()); Alert alertBox = Utils.driver.switchTo().alert(); alertBox.accept(); Utils.retryingFindAndClick(By.id("save_print")); /** 获取装配成功后的条码 **/ 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.retryingFindAndSwitchToFrame(By .id("iframe_packing")); // 编辑装配的物品的数量 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(); // String name = Utils.settings.getJSONObject("灭菌程序").getString("名称1"); scan(); WebElement element = Utils.retryingFind(By.id("sterilingType")); if (element != null) { displayed = element.isDisplayed(); if (displayed) { element.click(); Utils.retryingFind( By.xpath("//div/ul/li[contains(text(), '" + name + "')]")).click(); } } Utils.retryingFindAndClick(By.id("packageType-triggerWrap")); name = Utils.settings.getJSONObject("包装类型").getString("名称1"); Utils.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); Wait wait = new FluentWait(Utils.driver) .withTimeout(5000, TimeUnit.MILLISECONDS) .pollingEvery(250, TimeUnit.MILLISECONDS) .ignoring(NoSuchElementException.class) .ignoring(StaleElementReferenceException.class); wait.until(ExpectedConditions.alertIsPresent()); Alert alertBox = Utils.driver.switchTo().alert(); alertBox.accept(); Utils.retryingFindAndClick(By.id("save_print")); /** 获取装配成功后的条码 **/ 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.retryingFindAndClick(By.id("addDamageMaterial")); 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()); } } /** * 装配自定义器械 */ @Test public void assemble_CustomSet() { try { Utils.driver.switchTo().defaultContent(); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_packing")); // 编辑装配的物品的数量 // 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("名称2"))).click(); // // WebElement frame = Utils.retryingFind(By.id("iframe_packing")); // Utils.driver.switchTo().frame(frame); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='basketBarcodeInput']"), Utils.settings.getJSONObject("一级供应室清洗篮筐3").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); Utils.retryingFindAndClick(By .cssSelector("img[role='presentation']")); location = Utils.settings.getJSONObject("装配定位").getString("定位2"); a = Integer.valueOf(location).intValue(); editTreeGridCell("basketTreeGrid", a, 3); Utils.retryingFindAndClick(By.cssSelector("input[value='丢失']")); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By.cssSelector("input[value='补充打印']")); 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-recordindex='" + a + "']")); String b = null; if (element != null) { displayed = element.isDisplayed(); if (displayed) { Utils.retryingFindAndClick(By .cssSelector("tr[data-recordindex='" + a + "']")); Utils.retryingFindAndSendKeys( By.cssSelector("tr[data-recordindex='" + a + "']"), Keys.DOWN); id = Utils.settings.getJSONObject("一级供应室器械包1").getString( "标识牌条码3id"); a = Integer.valueOf(id).intValue(); Utils.retryingFindAndClick(By .cssSelector("tr[data-recordindex='" + a + "']")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//span/span/span[contains(text(), '补充并打印')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//span/span[contains(text(), '是')]")); // /** 获取补充成功后的标识牌条码 **/ // 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-recordindex='" + a + "']")); ab.click(); b = ab.getText(); b = b.trim(); b = b.substring(2, 11); System.out.println("补充的标示牌条码:" + b); Utils.retryingFindAndClick(By .xpath("//span/span/span[contains(text(), '取消')]")); Thread.sleep(1000); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '确定')]")); // 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(); // WebElement frame = Utils.retryingFind(By .id("iframe_packing")); Utils.driver.switchTo().frame(frame); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='basketBarcodeInput']"), Utils.settings.getJSONObject("一级供应室清洗篮筐2") .getString("条码") + "\n"); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='basketBarcodeInput']"), Utils.settings.getJSONObject("一级供应室清洗篮筐1") .getString("条码") + "\n"); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='basketBarcodeInput']"), Utils.settings.getJSONObject("一级供应室清洗篮筐3") .getString("条码") + "\n"); action = new Actions(Utils.driver); editTreeGridCell("basketTreeGrid", 0, 0); Utils.retryingFindAndClick(By .cssSelector("img[role='presentation']")); } } else { Utils.retryingFindAndClick(By .xpath("//span/span/span[contains(text(), '取消')]")); 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.retryingFindAndSendKeys( By.id("scanIdCardBarcode-inputEl"), 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.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); } } Utils.retryingFindAndClick(By.id("packageType-triggerWrap")); name = Utils.settings.getJSONObject("包装类型") .getString("名称1"); Utils.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); Wait wait = new FluentWait( Utils.driver) .withTimeout(5000, TimeUnit.MILLISECONDS) .pollingEvery(250, TimeUnit.MILLISECONDS) .ignoring(NoSuchElementException.class) .ignoring(StaleElementReferenceException.class); wait.until(ExpectedConditions.alertIsPresent()); Alert alertBox = Utils.driver.switchTo().alert(); alertBox.accept(); Utils.retryingFindAndClick(By.id("save_print")); /** 获取装配成功后的条码 **/ Utils.barcodes = Utils.getToussesBarcodes(); System.out.println("本次装配条码:" + Utils.barcodes); System.out.println("所有装配条码:" + Utils.reBarcodes); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_packing")); signNum = Utils.settings.getJSONObject("一级供应室器械包1") .getString("标识牌条码2"); Utils.retryingFind(By.id("scanIdCardBarcode-inputEl")) .sendKeys(signNum + "\n"); scan(); Utils.retryingFindAndClick(By.id("save_print")); /** 获取装配成功后的条码 **/ 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.retryingFindAndSwitchToFrame(By .id("iframe_packing")); signNum = b; Utils.retryingFindAndSendKeys( By.id("scanIdCardBarcode-inputEl"), signNum + "\n"); scan(); Utils.retryingFindAndClick(By.id("save_print")); /** 获取装配成功后的条码 **/ Utils.barcodes = Utils.getToussesBarcodes(); System.out.println("本次装配条码:" + Utils.barcodes); System.out.println("所有装配条码:" + Utils.reBarcodes); } } else { WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_packing")); action = new Actions(Utils.driver); location = Utils.settings.getJSONObject("装配定位") .getString("定位2"); a = Integer.valueOf(location).intValue(); editTreeGridCell("waitPackingTreeGrid", a, 3); Utils.retryingFindAndClick(By .xpath("//span/span[contains(text(), '删除')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//span/span[contains(text(), '是')]")); } } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } /** * 报损补充 */ @Test public void assemble_DropAndScrap() { try { Utils.retryingFindAndClick(By.id("addDamageMaterial")); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("inputText"), Utils.settings .getJSONObject("一级供应室清洗篮筐4").getString("条码") + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '确定')]")); 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.retryingFindAndClick(By.linkText(Utils.settings .getJSONObject("一级供应室装配组").getString("名称1"))); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_packing")); // 丢失补充 Utils.retryingFindAndSendKeys( By.cssSelector("input[name='basketBarcodeInput']"), Utils.settings.getJSONObject("一级供应室清洗篮筐3").getString("条码") + "\n"); Actions action = new Actions(Utils.driver); editTreeGridCell("basketTreeGrid", 0, 0); Utils.retryingFindAndClick(By .cssSelector("img[role='presentation']")); editTreeGridCell("basketTreeGrid", 1, 3); Utils.retryingFindAndClick(By.cssSelector("input[value='丢失']")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("inputText"), Utils.settings .getJSONObject("一级供应室清洗篮筐4").getString("条码") + "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '确定')]")); 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.retryingFindAndClick(By.linkText(Utils.settings .getJSONObject("一级供应室装配组").getString("名称1"))); frame = Utils.retryingFindAndSwitchToFrame(By.id("iframe_packing")); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='operatorBarcode']"), Utils.settings.getJSONObject("一级供应室配包人").getString("条码") + "\n"); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='basketBarcodeInput']"), Utils.settings.getJSONObject("一级供应室清洗篮筐3").getString("条码") + "\n"); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='basketBarcodeInput']"), Utils.settings.getJSONObject("一级供应室清洗篮筐1").getString("条码") + "\n"); Utils.retryingFindAndClick(By.id("checkAllTaskNode-inputRow")); Utils.retryingFindAndClick(By.id("sterilingType-triggerWrap")); Actions click = new Actions(Utils.driver); String name = Utils.settings.getJSONObject("灭菌程序").getString("名称1"); Utils.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); Utils.retryingFindAndClick(By.id("packageType-triggerWrap")); name = Utils.settings.getJSONObject("包装类型").getString("名称1"); Utils.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); Wait wait = new FluentWait(Utils.driver) .withTimeout(5000, TimeUnit.MILLISECONDS) .pollingEvery(250, TimeUnit.MILLISECONDS) .ignoring(NoSuchElementException.class) .ignoring(StaleElementReferenceException.class); wait.until(ExpectedConditions.alertIsPresent()); Alert alertBox = Utils.driver.switchTo().alert(); alertBox.accept(); Utils.retryingFindAndClick(By.id("save_print")); /** 获取装配成功后的条码 **/ 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.retryingFindAndClick(By.linkText(Utils.settings .getJSONObject("二级供应室装配组").getString("名称1"))); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_packing")); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='basketBarcodeInput']"), Utils.settings.getJSONObject("二级供应室清洗篮筐1").getString("条码") + "\n"); Actions action = new Actions(Utils.driver); editTreeGridCell("basketTreeGrid", 0, 0); Utils.retryingFindAndClick(By .cssSelector("img[role='presentation']")); editTreeGridCell("basketTreeGrid", 1, 3); Utils.retryingFindAndClick(By.cssSelector("input[value='拆包']")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .cssSelector("input[name='sterilingType']")); String name = Utils.settings.getJSONObject("灭菌程序").getString("名称1"); Utils.retryingFindAndClick(By .xpath("//div/div/ul/li[contains(text(), '" + name + "')]")); // 拆分第一个包 WebElement leftTable = Utils.retryingFind(By .cssSelector("tr[class='x4-grid-row x4-grid-data-row']")); action.click(leftTable).perform(); Utils.retryingFindAndClick(By .xpath("//span/span/span[contains(text(), '>>')]")); Utils.retryingFindAndClick(By .xpath("//span/span/span[contains(text(), '拆分')]")); // 拆分第二个包 Utils.retryingFindAndClick(By .xpath("//span/span/span[contains(text(), '>>>>')]")); Utils.retryingFindAndClick(By .xpath("//span/span/span[contains(text(), '拆分')]")); // 点击装配按钮 Utils.retryingFindAndClick(By .xpath("//span/span/span[contains(text(), '装配')]")); // 必须加上如下的切换代码,否则获取装配的器械包的条码的javascript语句执行会报异常错误 frame = Utils.retryingFindAndSwitchToFrame(By.id("iframe_packing")); /** 获取装配成功后的条码 **/ 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.retryingFindAndClick(By.linkText(Utils.settings .getJSONObject("一级供应室装配组").getString("名称3"))); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_packing")); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='basketBarcodeInput']"), Utils.settings.getJSONObject("一级供应室清洗篮筐4").getString("条码") + "\n"); Thread.sleep(1500); Actions action = new Actions(Utils.driver); editTreeGridCell("basketTreeGrid", 0, 0); // action.click( // Utils.retryingFind(By // .cssSelector("img[role='presentation']"))) // .perform(); editTreeGridCell("basketTreeGrid", 1, 3); Thread.sleep(1500); Utils.retryingFindAndClick(By.cssSelector("input[value='拆包']")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .cssSelector("input[name='sterilingType']")); String name = Utils.settings.getJSONObject("灭菌程序").getString("名称2"); Utils.retryingFindAndClick(By .xpath("//div/div/ul/li[contains(text(), '" + name + "')]")); // 拆分第一个包 WebElement leftTable = Utils.retryingFind(By .cssSelector("tr[class='x4-grid-row x4-grid-data-row']")); action.click(leftTable).perform(); Utils.retryingFindAndClick(By .xpath("//span/span/span[contains(text(), '>>')]")); Utils.retryingFindAndClick(By .xpath("//span/span/span[contains(text(), '拆分')]")); // 拆分第二个包 Utils.retryingFindAndClick(By .xpath("//span/span/span[contains(text(), '>>>>')]")); Utils.retryingFindAndClick(By .xpath("//span/span/span[contains(text(), '拆分')]")); // 扫描配包人条码 Utils.retryingFindAndSendKeys( By.cssSelector("input[name='packerBarcode']"), 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.retryingFindAndSendKeys( By.cssSelector("input[name='reviewerBarcode']"), Utils.settings.getJSONObject("一级供应室审核人") .getString("条码") + "\n"); } // 点击装配按钮 Utils.retryingFindAndClick(By .xpath("//span/span/span[contains(text(), '装配')]")); // 必须加上如下的切换代码,否则获取装配的器械包的条码的javascript语句执行会报异常错误 frame = Utils.retryingFindAndSwitchToFrame(By.id("iframe_packing")); /** 获取装配成功后的条码 **/ 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(); Utils.retryingFindAndClick(By.id("tab-1078-btnInnerEl")); Utils.retryingFindAndClick(By .cssSelector("div[class='x4-grid-cell-inner ']")); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .cssSelector("div[class='x-grid3-row-checker']")); Utils.retryingFindAndClick(By .xpath("//tbody/tr/td/em/button[contains(text(), '修改')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("packer2"), Keys.DOWN); String name = Utils.settings.getJSONObject("一级供应室配包人").getString("名字"); Utils.retryingFindAndClick(By.xpath("//div/div/div[contains(text(), '" + name + "')]")); Utils.retryingFindAndSendKeys(By.id("reviewer2"), Keys.DOWN); name = Utils.settings.getJSONObject("一级供应室审核人").getString("名字"); Utils.retryingFindAndClick(By.xpath("//div/div/div[contains(text(), '" + name + "')]")); Utils.retryingFindAndClick(By.id("sterilingType2")); name = Utils.settings.getJSONObject("灭菌程序").getString("名称2"); Utils.retryingFindAndClick(By.xpath("//div/div/div[contains(text(), '" + name + "')]")); Utils.retryingFindAndClick(By.id("packageType2")); name = Utils.settings.getJSONObject("包装类型").getString("名称2"); Utils.retryingFindAndClick(By.xpath("//div/div/div[contains(text(), '" + name + "')]")); Utils.retryingFindAndClick(By .cssSelector("img[src='/ext/resources/images/default/s.gif']")); Utils.retryingFindAndClick(By .xpath("//tbody/tr/td/a/em/span[contains(text(), '20')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//tbody/tr/td/em/button[contains(text(), '确定')]")); currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .cssSelector("div[class='x-grid3-row-checker']")); Utils.retryingFindAndClick(By .xpath("//tbody/tr/td/em/button[contains(text(), '打印')]")); } /** * 二级供应装配器械 ***/ @Test public void assemble_secondSupplyRoomSet() { try { String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_packing")); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='operatorBarcode']"), Utils.settings.getJSONObject("二级供应室审核人").getString("条码") + "\n"); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='basketBarcodeInput']"), Utils.settings.getJSONObject("二级供应室清洗篮筐1").getString("条码") + "\n"); Utils.retryingFindAndClick(By.id("checkAllTaskNode-inputRow")); Utils.retryingFindAndClick(By.id("sterilingType-triggerWrap")); String name = Utils.settings.getJSONObject("灭菌程序").getString("名称1"); Utils.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); Utils.retryingFindAndClick(By.id("packageType-triggerWrap")); name = Utils.settings.getJSONObject("包装类型").getString("名称1"); Utils.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); Wait wait = new FluentWait(Utils.driver) .withTimeout(5000, TimeUnit.MILLISECONDS) .pollingEvery(250, TimeUnit.MILLISECONDS) .ignoring(NoSuchElementException.class) .ignoring(StaleElementReferenceException.class); wait.until(ExpectedConditions.alertIsPresent()); Alert alertBox = Utils.driver.switchTo().alert(); alertBox.accept(); Utils.retryingFindAndClick(By.id("save_print")); /** 获取装配成功后的条码 **/ 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.retryingFindAndClick(By.linkText(Utils.settings .getJSONObject("二级供应室装配组").getString("名称2"))); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_packing")); // 编辑装配的物品的数量 Actions action = new Actions(Utils.driver); editTreeGridCell("waitPackingTreeGrid", 7, 1); action.sendKeys("2" + "\n").perform(); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='operatorBarcode']"), Utils.settings.getJSONObject("二级供应室配包人").getString("条码") + "\n"); Utils.retryingFindAndClick(By.id("save_print")); /** 获取装配成功后的条码 **/ 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.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")); scan(); Utils.retryingFindAndSendKeys(By.id("tousseName"), Keys.DOWN); String name = Utils.settings.getJSONObject("一级供应室器械包2").getString( "名称"); Utils.retryingFindAndClick(By .xpath("//div/div/div[contains(text(), '" + name + "')]")); Utils.retryingFind(By.id("packAmount")).clear(); Utils.retryingFindAndSendKeys(By.id("packAmount"), "2" + "\n"); Utils.retryingFindAndClick(By .xpath("//tbody/tr/td/em/button[contains(text(), '装配并打印标签')]")); /** 获取装配成功后的条码 **/ // 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.retryingFindAndClick(By.linkText(Utils.settings .getJSONObject("二级供应室装配组").getString("名称3"))); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_packing")); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='basketBarcodeInput']"), Utils.settings.getJSONObject("二级供应室清洗篮筐1").getString("条码") + "\n"); Utils.retryingFindAndClick(By.id("checkAllTaskNode-inputRow")); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='operatorBarcode']"), Utils.settings.getJSONObject("二级供应室配包人").getString("条码") + "\n"); Utils.retryingFindAndClick(By.id("sterilingType-triggerWrap")); String name = Utils.settings.getJSONObject("灭菌程序").getString("名称1"); Utils.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); Utils.retryingFindAndClick(By.id("packageType-triggerWrap")); name = Utils.settings.getJSONObject("包装类型").getString("名称1"); Utils.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); Wait wait = new FluentWait(Utils.driver) .withTimeout(5000, TimeUnit.MILLISECONDS) .pollingEvery(250, TimeUnit.MILLISECONDS) .ignoring(NoSuchElementException.class) .ignoring(StaleElementReferenceException.class); wait.until(ExpectedConditions.alertIsPresent()); Alert alertBox = Utils.driver.switchTo().alert(); alertBox.accept(); Utils.retryingFindAndClick(By.id("save_print")); /** 获取装配成功后的条码 **/ 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.retryingFindAndSendKeys( By.cssSelector("input[name='operatorBarcode']"), Utils.settings.getJSONObject("一级供应室配包人") .getString("条码") + "\n"); if (element != null) { displayed = element.isDisplayed(); if (displayed) { Utils.retryingFindAndSendKeys( By.cssSelector("input[name='reviewerBarcode']"), Utils.settings.getJSONObject("一级供应室审核人") .getString("条码") + "\n"); } } } } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } }