package test_4_1.apply; import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.StaleElementReferenceException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.ui.FluentWait; import org.openqa.selenium.support.ui.Wait; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import test_4_1.Login; import test_4_1.apply.service.ApplyComboService; import test_4_1.apply.service.ApplyComboServiceImpl; import test_4_1.apply.service.ApplyService; import test_4_1.apply.service.ApplyServiceImpl; import test_4_1.apply.service.GdsyApplyServiceImpl; import test_4_1.tools.Utils; import java.util.concurrent.TimeUnit; import java.util.function.Function; /** * @author zhonghaowen * @apiNote * @since 2017-04-13 */ public class ApplyTest { protected Logger logger = LoggerFactory.getLogger(this.getClass()); private ApplyService applyServiceImpl = new ApplyServiceImpl(); private ApplyComboService applyComboServiceImpl = new ApplyComboServiceImpl(); private ApplyService gdsyApplyServiceImpl = new GdsyApplyServiceImpl(); @BeforeMethod public void init() { Utils.init(); Login login = new Login(); login.login_clinic(); // Utils.retryingFindAndClick(By.id("recyclingApplication")); // Utils.retryingFindAndSwitchToFrame(By.id("iframe_recyclingApplication")); // Utils.retryingFindAndClick(By.xpath("//button[contains(text(), '申请物品')]")); // Utils.driver.switchTo().defaultContent(); // String currentWindowHandle = Utils.driver.getWindowHandle(); // Utils.driver.switchTo().window(currentWindowHandle); } /** * 点击打开申请后直接提交 */ @Test public void apply_fail() { Utils.retryingFindAndClick(By.cssSelector("a[id='commitBtn']")); } /** * 向处理科室二级供应室申请器械包、敷料包、消毒物品 */ @Test public void apply_secondSupplyRoomTest() { // 查询后输入数量 try { applyComboServiceImpl.apply_secondSupplyRoom(); } catch (Exception e) { logger.error("{}发生错误,异常信息如下:", "向处理科室二级供应室申请器械包、敷料包、消毒物品", e); Assert.fail(e.getMessage()); } } /** * 测试向处理科室一级供应室申请器械包、敷料包、消毒物品 */ @Test public void apply_oneSupplyRoomTest() { try { applyComboServiceImpl.apply_oneSupplyRoom(); } catch (Exception e) { logger.error("{}发生错误,异常信息如下:", "测试向处理科室一级供应室申请器械包、敷料包、消毒物品", e); Assert.fail(e.getMessage()); } } /** * 申请一次性物品(分单) */ @Test public void apply_oneUseTest() { try { applyServiceImpl.apply_oneUse(); } catch (Exception e) { logger.error("{}发生错误,异常信息如下:", "申请一次性物品", e); Assert.fail(e.getMessage()); } } /** * 申请消毒物品 */ @Test public void apply_sterilizeTest() { try { applyServiceImpl.apply_sterilize(); } catch (Exception e) { logger.error("{}发生错误,异常信息如下:", "申请消毒物品", e); Assert.fail(e.getMessage()); } } /** * 申请器械包、敷料包(分单) */ @Test public void apply_setTest() { try { applyServiceImpl.apply_set(); } catch (Exception e) { logger.error("{}发生错误,异常信息如下:", "申请器械包、敷料包(分单)", e); Assert.fail(e.getMessage()); } } /* *//** * 申请一次性物品(分单) *//* @Test public void apply_onese() { try { WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_recyclingApplication")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '申请一次性物品')]")); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); String name = Utils.settings.getJSONObject("一级供应室用户").getString( "科室名称"); Utils.retryingFindAndSendKeys(By.id("handleDepart-inputEl"), Keys.DOWN); Utils.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); Utils.retryingFindAndSendKeys(By.id("package1-inputEl"), Utils.settings.getJSONObject("一级供应室一次性物品").getString("名称")); Utils.retryingFindAndSendKeys(By.id("package1-inputEl"), "\n"); Utils.retryingFindAndSendKeys(By.id("count1-inputEl"), "5" + "\n"); // 定位到弹出对话框的按钮 Utils.LocaAndWait(); Utils.retryingFindAndClick(By .xpath("//span/span/span[contains(text(), '提交')]")); // 定位到弹出对话框的按钮 Utils.LocaAndWait(); } catch (Exception e) { e.printStackTrace(); Assert.fail(e.getMessage()); } }*/ /** * 省医申请器械包、敷料包 */ @Test public void apply_gdsy_setsTest() { try { gdsyApplyServiceImpl.apply_set(); } catch (Exception e) { logger.error("{}发生错误,异常信息如下:", "省医申请器械包、敷料包", e); Assert.fail(e.getMessage()); } } /** * 省医申请消毒物品 */ @Test public void apply_gdsy_sterilizeTest() { try { gdsyApplyServiceImpl.apply_sterilize(); } catch (Exception e) { logger.error("{}发生错误,异常信息如下:", "省医申请消毒物品", e); Assert.fail(e.getMessage()); } } /** * 省医申请一次性物品 */ @Test public void apply_gdsy_oneUseTest() { try { gdsyApplyServiceImpl.apply_oneUse(); } catch (Exception e) { e.printStackTrace(); Assert.fail(e.getMessage()); } } /** * 申请外来器械有病人信息等 */ @Test public void apply_foreignSetInformation() { try { String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='patientArea']"), "3" + "\n"); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='roomNumber']"), "4" + "\n"); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='bedNumber']"), "5" + "\n"); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='patient']"), "6" + "\n"); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='patientAge']"), "7岁" + "\n"); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='ascriptionDepartment']"), "8" + "\n"); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='surgery']"), "9" + "\n"); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='operationTime']"), "2020-02-02 02:02" + "\n"); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='operationRoom']"), "10" + "\n"); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='doctor']"), "11" + "\n"); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='remark']"), "12" + "\n"); String name = Utils.settings.getJSONObject("一级供应室外来器械").getString( "名称"); WebElement element = Utils.retryingFindAndClick(By .cssSelector("input[name='foreignTousseName1']")); Thread.sleep(1000); element.sendKeys(name); Utils.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); Utils.retryingFindAndClick(By.cssSelector("a[id='addTousseBt']")); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='hospitalNumber']"), "1" + "\n"); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='clinicNumber']"), "2" + "\n"); Utils.retryingFindAndClick(By .xpath("//span/span/span[contains(text(), '提交')]")); } catch (Exception e) { e.printStackTrace(); Assert.fail(e.getMessage()); } } /** * 直接申请外来器械 */ @Test public void apply_foreignSet() { try { // Utils.retryingFindAndClick(By.xpath("//span[contains(text(), '取消')]")); // WebElement frame = Utils.retryingFind(By // .id("iframe_recyclingApplication")); // Utils.driver.switchTo().frame(frame); // Utils.retryingFind( // By.xpath("//button[contains(text(), '申请外来器械')]")).click(); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); String name = Utils.settings.getJSONObject("一级供应室外来器械").getString( "名称"); Utils.retryingFindAndClick( By.cssSelector("input[name='foreignTousseName1']")) .sendKeys(name); Utils.retryingFindAndClick(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); Utils.retryingFindAndClick(By.cssSelector("a[id='addTousseBt']")); Utils.retryingFindAndClick(By .xpath("//span/span/span[contains(text(), '提交')]")); Thread.sleep(1500); } catch (Exception e) { e.printStackTrace(); Assert.fail(e.getMessage()); } } /** * 借物单 */ @Test public void apply_borrow() { try { String SupplyRoomName = Utils.settings.getJSONObject("一级供应室用户") .getString("科室名称"); Utils.retryingFindAndSendKeys( By.cssSelector("input[id='handleDepart']"), Keys.DOWN); Utils.retryingFindAndSendKeys( By.cssSelector("input[id='handleDepart']"), Keys.DOWN); Utils.retryingFindAndClick(By .xpath("//div/div/div[contains(text(), '" + SupplyRoomName + "')]")); Utils.retryingFindComboBoxAndSendKeys( By.cssSelector("input[name='leaseTousseName']"), Utils.settings.getJSONObject("一级供应室器械包2").getString("名称")); Utils.retryingFindAndSendKeys(By.id("applicantAmount"), "2"); Utils.retryingFindAndSendKeys( By.cssSelector("input[name='leaseTousseName']"), "\n"); Utils.retryingFindAndSendKeys(By.id("applicantAmount"), "\n"); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '提交')]")); // 定位到弹出对话框的按钮 Wait wait = new FluentWait(Utils.driver) .withTimeout(5000, TimeUnit.MILLISECONDS) .pollingEvery(250, TimeUnit.MILLISECONDS) .ignoring(NoSuchElementException.class) .ignoring(StaleElementReferenceException.class); wait.until(new Function() { public WebElement apply(WebDriver driver) { return Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '是')]")); } }); } catch (Exception e) { e.printStackTrace(); Assert.fail(e.getMessage()); } } /** * 借物单归还 */ @Test public void apply_borrow_return() { try { Utils.retryingFindAndClick(By.id("borrowManager")); WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_borrowManager")); boolean displayed = false; WebElement element = Utils.retryingFind(By .cssSelector("input[value='归还物品']")); if (element != null) { displayed = element.isDisplayed(); if (displayed) { Utils.retryingFindAndClick(By .cssSelector("input[value='归还物品']")); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '保存')]")); // 定位到弹出对话框的按钮 Wait wait = new FluentWait( Utils.driver) .withTimeout(5000, TimeUnit.MILLISECONDS) .pollingEvery(250, TimeUnit.MILLISECONDS) .ignoring(NoSuchElementException.class) .ignoring(StaleElementReferenceException.class); WebElement yesbutton = wait .until(new Function() { public WebElement apply(WebDriver driver) { return driver.findElement(By .xpath("//button[contains(text(), '是')]")); } }); yesbutton.click(); } } } catch (Exception e) { e.printStackTrace(); Assert.fail(e.getMessage()); } } /** * 自定义器械申请 */ @Test public void apply_custom() { try { WebElement frame = Utils.retryingFindAndSwitchToFrame(By .id("iframe_recyclingApplication")); Utils.retryingFindAndClick(By .xpath("//button[contains(text(), '申请自定义器械包')]")); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); Utils.retryingFindAndSendKeys(By.id("name"), Keys.DOWN); Utils.retryingFindAndSendKeys(By.id("name"), "\n"); Utils.retryingFindAndClick(By.id("saveBtn")); } catch (Exception e) { e.printStackTrace(); Assert.fail(e.getMessage()); } } @AfterMethod public void after() { Utils.driver.quit(); } }