Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Delivery.java =================================================================== diff -u -r21671 -r21683 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Delivery.java (.../Delivery.java) (revision 21671) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Delivery.java (.../Delivery.java) (revision 21683) @@ -1,12 +1,9 @@ package test.forgon.disinfectsystem.selenium; +import static org.testng.Assert.assertTrue; + import java.util.List; -import java.util.function.Function; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.Test; -import org.testng.annotations.BeforeMethod; -import org.testng.AssertJUnit; import org.apache.commons.collections4.CollectionUtils; import org.openqa.selenium.By; import org.openqa.selenium.Keys; @@ -15,11 +12,14 @@ import org.openqa.selenium.os.WindowsUtils; import org.openqa.selenium.support.ui.ExpectedConditions; 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.forgon.disinfectsystem.selenium.factory.WaitFactory; import test.forgon.disinfectsystem.selenium.tools.JSWaiter; import test.forgon.disinfectsystem.selenium.tools.Utils; -import static org.testng.Assert.assertNotNull; public class Delivery { @BeforeMethod @@ -30,12 +30,9 @@ login.login_oneSupplyRoom(); Utils.retryingFindAndClick(By.id("invoicePlan")); Utils.retryingFindAndSwitchToFrame(By.id("iframe_invoicePlan")); - - openInvoiceWindow(); - - Utils.driver.switchTo().defaultContent(); - String currentwindowhandle = Utils.driver.getWindowHandle(); - Utils.driver.switchTo().window(currentwindowhandle); + + String name = Utils.settings.getJSONObject("临床科室").getString("名称"); + openInvoiceWindow(name); } @Test @@ -47,26 +44,42 @@ * 打开某科室的发货窗口 * */ - public void openInvoiceWindow() { - String name = Utils.settings.getJSONObject("临床科室").getString("名称"); + public void openInvoiceWindow(String name) { + Wait wait = WaitFactory.createDefaultWait(); - WebElement nameElement = wait.until(ExpectedConditions - .elementToBeClickable(Utils.retryingFind(By - .linkText(name)))); + boolean windowOpened = false; + + int attempts = 0; + while (attempts < 3) { + try { - // 不能用下面这种方式查找,会报如下错误: - // org.openqa.selenium.WebDriverException: Returned value cannot be - // converted to List - // wait.until(ExpectedConditions.elementToBeClickable(By.linkText(name))); - - // 视图中的记录,执行selenium的js点击无效,必须调用selenium的API - if (Utils.isFind(nameElement)) { - nameElement.click(); - } else { - Utils.retryingFindAndClick(By.xpath("//a[contains(text(), '" + name - + "')]")); + // 不能用下面这种方式查找,会报如下错误: + // org.openqa.selenium.WebDriverException: Returned value cannot be + // converted to List + // wait.until(ExpectedConditions.elementToBeClickable(By.linkText(name))); + WebElement deptNameElement = wait.until(ExpectedConditions + .elementToBeClickable(Utils.retryingFind(By + .linkText(name)))); + + // 视图中的记录,执行selenium的js点击无效,必须调用selenium的API + deptNameElement.click(); + + Utils.driver.switchTo().defaultContent(); + String currentwindowhandle = Utils.driver.getWindowHandle(); + Utils.driver.switchTo().window(currentwindowhandle); + + if (Utils.isFind(Utils.retryingFind(By + .id("recyclingApplicationWin")))) { + windowOpened = true; + break; + + } + } catch (Exception e) { + } + attempts++; } - + + assertTrue(windowOpened , "发货窗口没有打开!"); // Utils.retryingFindAndClickBySeleniumAPI(By.linkText(name)); } @@ -80,43 +93,37 @@ Utils.retryingFindAndClick(By.id("invoicePlan")); Utils.retryingFindAndSwitchToFrame(By.id("iframe_invoicePlan")); - openInvoiceWindow(); + String name = Utils.settings.getJSONObject("临床科室").getString("名称"); + openInvoiceWindow(name); - Utils.driver.switchTo().defaultContent(); - String currentwindowhandle = Utils.driver.getWindowHandle(); - Utils.driver.switchTo().window(currentwindowhandle); - if (Utils.isFind(Utils.retryingFind(By - .id("recyclingApplicationWin")))) { - Utils.retryingFindAndSendKeys(By.id("senderBarcode"), - Utils.settings.getJSONObject("一级供应室用户").getString("条码") - + "\n"); + Utils.retryingFindAndSendKeys(By.id("senderBarcode"), + Utils.settings.getJSONObject("一级供应室用户").getString("条码") + + "\n"); - Utils.retryingFind(By.id("scanText")).clear(); - String barcode = Utils.getSeleniumRuntimeData() - .getInsideTousseBarcode(); - // 器械包条码 - Utils.retryingFindAndSendKeys(By.id("scanText"), barcode + "\n"); - System.out.print("器械包条码:" + barcode); - barcode = Utils.getSeleniumRuntimeData() - .getDressingTousseBarcode(); - // 敷料包条码 - Utils.retryingFindAndSendKeys(By.id("scanText"), barcode + "\n"); - System.out.print("敷料包条码:" + barcode); - // 外来器械包条码 - Delivery_Foreign(); - // 器械包奇数发货 - for (int i = 0; i < Utils.reBarcodes.size(); i++) { - int a = Integer.valueOf(Utils.reBarcodes.get(i)).intValue(); - if (a % 2 != 0) { - Utils.retryingFindAndSendKeys(By.id("scanText"), - Utils.reBarcodes.get(i) + "\n"); - } - + Utils.retryingFind(By.id("scanText")).clear(); + String barcode = Utils.getSeleniumRuntimeData() + .getInsideTousseBarcode(); + // 器械包条码 + Utils.retryingFindAndSendKeys(By.id("scanText"), barcode + "\n"); + System.out.print("器械包条码:" + barcode); + barcode = Utils.getSeleniumRuntimeData().getDressingTousseBarcode(); + // 敷料包条码 + Utils.retryingFindAndSendKeys(By.id("scanText"), barcode + "\n"); + System.out.print("敷料包条码:" + barcode); + // 外来器械包条码 + Delivery_Foreign(); + // 器械包奇数发货 + for (int i = 0; i < Utils.reBarcodes.size(); i++) { + int a = Integer.valueOf(Utils.reBarcodes.get(i)).intValue(); + if (a % 2 != 0) { + Utils.retryingFindAndSendKeys(By.id("scanText"), + Utils.reBarcodes.get(i) + "\n"); } - // 点击保存按钮 - Utils.retryingFindAndClick(By - .xpath("//button[contains(text(), '保存')]")); + } + // 点击保存按钮 + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '保存')]")); JSWaiter.waitUntilJQueryReady(); } catch (Exception e) { e.printStackTrace(); @@ -235,39 +242,32 @@ @Test public void Delivery_oneSupplyRoom() { try { - WebElement window = Utils.retryingFind(By - .id("recyclingApplicationWin")); + Utils.retryingFindAndSendKeys(By.id("senderBarcode"), + Utils.settings.getJSONObject("一级供应室用户").getString("条码") + + "\n"); - assertNotNull(window); + // // 整筐发货 + // Utils.retryingFindAndSendKeys(By.id("scanText"), + // Utils.settings.getJSONObject("灭菌筐02").getString("条码") + // + "\n"); - if (Utils.isFind(window)) { - Utils.retryingFindAndSendKeys(By.id("senderBarcode"), - Utils.settings.getJSONObject("一级供应室用户").getString("条码") - + "\n"); + Utils.retryingFind(By.id("scanText")).clear(); + Utils.retryingFindAndSendKeys(By.id("scanText"), Utils.settings + .getJSONObject("灭菌篮筐01").getString("条码") + "\n"); - // // 整筐发货 - // Utils.retryingFindAndSendKeys(By.id("scanText"), - // Utils.settings.getJSONObject("灭菌筐02").getString("条码") - // + "\n"); - - Utils.retryingFind(By.id("scanText")).clear(); - Utils.retryingFindAndSendKeys(By.id("scanText"), Utils.settings - .getJSONObject("灭菌篮筐01").getString("条码") + "\n"); - - // 一次性物品发货 - if (CollectionUtils - .isNotEmpty(Utils.disposableGoodsBatchBarcodesAfterEntry)) { - for (String barcode : Utils.disposableGoodsBatchBarcodesAfterEntry) { - Utils.retryingFindAndClear(By.id("scanText")); - Utils.retryingFindAndSendKeys(By.id("scanText"), - barcode + "\n"); - } + // 一次性物品发货 + if (CollectionUtils + .isNotEmpty(Utils.disposableGoodsBatchBarcodesAfterEntry)) { + for (String barcode : Utils.disposableGoodsBatchBarcodesAfterEntry) { + Utils.retryingFindAndClear(By.id("scanText")); + Utils.retryingFindAndSendKeys(By.id("scanText"), barcode + + "\n"); } - Delivery_FixedBarcodeDisinfection(); - Delivery_Disinfection(); - Utils.retryingFindAndClick(By - .xpath("//button[contains(text(), '保存')]")); } + Delivery_FixedBarcodeDisinfection(); + Delivery_Disinfection(); + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '保存')]")); JSWaiter.waitUntilJQueryReady(); } catch (Exception e) { e.printStackTrace(); @@ -321,28 +321,26 @@ @Test public void Delivery_secondSupplyRoom() { try { - if (Utils.isFind(Utils.retryingFind(By - .id("recyclingApplicationWin")))) { - Utils.retryingFindAndSendKeys(By.id("senderBarcode"), - Utils.settings.getJSONObject("二级供应室用户").getString("条码") - + "\n"); - // 整筐发货 - Utils.retryingFindAndSendKeys(By.id("scanText"), Utils.settings - .getJSONObject("灭菌篮筐001").getString("条码") + "\n"); - Delivery_FixedBarcodeDisinfection(); - Delivery_Disinfection(); - // 一次性物品发货 - if (CollectionUtils - .isNotEmpty(Utils.disposableGoodsBatchBarcodesAfterEntry)) { - for (String barcode : Utils.disposableGoodsBatchBarcodesAfterEntry) { - Utils.retryingFindAndClear(By.id("scanText")); - Utils.retryingFindAndSendKeys(By.id("scanText"), - barcode + "\n"); - } + + Utils.retryingFindAndSendKeys(By.id("senderBarcode"), + Utils.settings.getJSONObject("二级供应室用户").getString("条码") + + "\n"); + // 整筐发货 + Utils.retryingFindAndSendKeys(By.id("scanText"), Utils.settings + .getJSONObject("灭菌篮筐001").getString("条码") + "\n"); + Delivery_FixedBarcodeDisinfection(); + Delivery_Disinfection(); + // 一次性物品发货 + if (CollectionUtils + .isNotEmpty(Utils.disposableGoodsBatchBarcodesAfterEntry)) { + for (String barcode : Utils.disposableGoodsBatchBarcodesAfterEntry) { + Utils.retryingFindAndClear(By.id("scanText")); + Utils.retryingFindAndSendKeys(By.id("scanText"), barcode + + "\n"); } - Utils.retryingFindAndClick(By - .xpath("//button[contains(text(), '保存')]")); } + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '保存')]")); JSWaiter.waitUntilJQueryReady(); } catch (Exception e) { e.printStackTrace(); @@ -384,28 +382,23 @@ Utils.retryingFindAndClick(By.id("invoicePlan")); Utils.retryingFindAndSwitchToFrame(By.id("iframe_invoicePlan")); - openInvoiceWindow(); + String name = Utils.settings.getJSONObject("临床科室").getString("名称"); + openInvoiceWindow(name); - Utils.driver.switchTo().defaultContent(); - String currentwindowhandle = Utils.driver.getWindowHandle(); - Utils.driver.switchTo().window(currentwindowhandle); - if (Utils.isFind(Utils.retryingFind(By - .id("recyclingApplicationWin")))) { - Utils.retryingFindAndSendKeys(By.id("senderBarcode"), - Utils.settings.getJSONObject("一级供应室用户").getString("条码") - + "\n"); + Utils.retryingFindAndSendKeys(By.id("senderBarcode"), + Utils.settings.getJSONObject("一级供应室用户").getString("条码") + + "\n"); - for (int i = 0; i < Utils.reBarcodes.size(); i++) { - int a = Integer.valueOf(Utils.reBarcodes.get(i)).intValue(); - if (a % 2 == 0) { - Utils.retryingFindAndSendKeys(By.id("scanText"), - Utils.reBarcodes.get(i) + "\n"); - } + for (int i = 0; i < Utils.reBarcodes.size(); i++) { + int a = Integer.valueOf(Utils.reBarcodes.get(i)).intValue(); + if (a % 2 == 0) { + Utils.retryingFindAndSendKeys(By.id("scanText"), + Utils.reBarcodes.get(i) + "\n"); } - - Utils.retryingFindAndClick(By - .xpath("//button[contains(text(), '保存')]")); } + + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '保存')]")); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); @@ -544,47 +537,42 @@ JSWaiter.waitUntilJQueryReady(); String name = Utils.settings.getJSONObject("临床科室").getString("名称"); if (Utils.isFind(Utils.retryingFind(By.linkText(name)))) { - openInvoiceWindow(); + openInvoiceWindow(name); - Utils.driver.switchTo().defaultContent(); + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '辅助发货')]")); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); - if (Utils.isFind(Utils.retryingFind(By - .id("recyclingApplicationWin")))) { - 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(), '保存')]")); + WebElement element = Utils.retryingFind(By + .xpath("//button[contains(text(), '保存')]")); - if (Utils.isFind(element)) { - // 等待仓库加载 - Utils.retryingFind(By - .xpath("//input[contains(@value, '测试供应室仓库')]")); + if (Utils.isFind(element)) { + // 等待仓库加载 + Utils.retryingFind(By + .xpath("//input[contains(@value, '测试供应室仓库')]")); - Utils.retryingFindAndSendKeys(By.id("senderBarcode"), - Utils.settings.getJSONObject("一级供应室用户") - .getString("条码") + "\n"); - Utils.retryingFindAndSendKeys( - By.id("personInChargeBarcode"), - Utils.settings.getJSONObject("一级供应室用户") - .getString("条码") + "\n"); - List allRows = Utils.driver - .findElements(By - .cssSelector("div[class='x-grid3-row my_row_yellow']")); - for (WebElement row : allRows) { - row.click(); - Utils.retryingFindAndClick(By - .xpath("//button[contains(text(), '添加')]")); - - } + Utils.retryingFindAndSendKeys( + By.id("senderBarcode"), + Utils.settings.getJSONObject("一级供应室用户").getString( + "条码") + + "\n"); + Utils.retryingFindAndSendKeys(By + .id("personInChargeBarcode"), Utils.settings + .getJSONObject("一级供应室用户").getString("条码") + "\n"); + List allRows = Utils.driver + .findElements(By + .cssSelector("div[class='x-grid3-row my_row_yellow']")); + for (WebElement row : allRows) { + row.click(); Utils.retryingFindAndClick(By - .xpath("//button[contains(text(), '保存')]")); - JSWaiter.waitUntilJQueryReady(); - } else { - Delivery_auxiliary(); + .xpath("//button[contains(text(), '添加')]")); + } + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '保存')]")); + JSWaiter.waitUntilJQueryReady(); + } else { + Delivery_auxiliary(); } } } catch (Exception e) { Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/ALL.java =================================================================== diff -u -r21667 -r21683 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/ALL.java (.../ALL.java) (revision 21667) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/ALL.java (.../ALL.java) (revision 21683) @@ -211,11 +211,8 @@ Utils.retryingFindAndClick(By.id("invoicePlan")); Utils.retryingFindAndSwitchToFrame(By.id("iframe_invoicePlan")); - delivery.openInvoiceWindow(); - - Utils.driver.switchTo().defaultContent(); - String currentwindowhandle = Utils.driver.getWindowHandle(); - Utils.driver.switchTo().window(currentwindowhandle); + String name = Utils.settings.getJSONObject("临床科室").getString("名称"); + delivery.openInvoiceWindow(name); delivery.Delivery_secondSupplyRoom(); userrecord.UserRecord_success(); login.login_Out(); @@ -323,7 +320,7 @@ Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '添加')]")); Utils.driver.switchTo().defaultContent(); - currentwindowhandle = Utils.driver.getWindowHandle(); + String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); wash.wash_washChangeBasket(); Utils.retryingFindAndClick(By