package test_4_1.apply; import org.openqa.selenium.By; 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.SettingConstants; import test_4_1.apply.applyConstants.ApplyBtnEnum; import test_4_1.apply.applyConstants.DeskIconEnum; import test_4_1.apply.bo.ApplyGoodBo; import test_4_1.apply.chain.ChainConsumer; import test_4_1.apply.factory.ApplyGoodBoFactory; import test_4_1.apply.helper.ApplyHelper; import test_4_1.apply.service.ApplyService; import test_4_1.apply.service.ApplyServiceImpl; import test_4_1.apply.service.BorrowApplyService; import test_4_1.apply.service.BorrowApplyServiceImpl; import test_4_1.tools.LoginUtil; 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 { private Logger logger = LoggerFactory.getLogger(this.getClass()); private ApplyService applyServiceImpl = new ApplyServiceImpl(); private BorrowApplyService borrowApplyServiceImpl = new BorrowApplyServiceImpl(); @BeforeMethod public void init() { LoginUtil.loginWithClinical(); // LoginUtil.loginWithOneSupplyRoom(); } /** * 申请一次性物品(分单) */ @Test public void apply_oneUseTest() { String task = "申请一次性物品"; try { logger.info("开始执行{}.........", task); ApplyGoodBo applyGoodBo = ApplyGoodBoFactory.createApplyNormalGoodBo(SettingConstants.一级供应室用户, ApplyBtnEnum.DISPOSABLE); ApplyHelper.openDeskTopIcon(applyGoodBo); applyServiceImpl.apply_oneUse(applyGoodBo); logger.info("执行{}结束.........", task); } catch (Exception e) { logger.error("{}发生错误,异常信息如下:", task, e); Assert.fail(e.getMessage()); } } /** * 申请消毒物品 */ @Test public void apply_sterilizeTest() { String task = "申请消毒物品"; try { logger.info("开始执行{}.........", task); ApplyGoodBo applyGoodBo = ApplyGoodBoFactory.createApplyNormalGoodBo(SettingConstants.一级供应室用户, ApplyBtnEnum.DISINFECTION); ApplyHelper.openDeskTopIcon(applyGoodBo); applyServiceImpl.apply_sterilize(applyGoodBo); logger.info("执行{}结束.........", task); } catch (Exception e) { logger.error("{}发生错误,异常信息如下:", task, e); Assert.fail(e.getMessage()); } } /** * 申请器械包、敷料包(分单) */ @Test public void apply_setTest() { String task = "申请器械包、敷料包(分单)"; try { logger.info("开始执行{}.........", task); ApplyGoodBo applyGoodBo = ApplyGoodBoFactory.createApplyNormalGoodBo(SettingConstants.一级供应室用户, ApplyBtnEnum.TOUSSE); ApplyHelper.openDeskTopIcon(applyGoodBo); applyServiceImpl.apply_set(applyGoodBo); logger.info("执行{}结束.........", task); } catch (Exception e) { logger.error("{}发生错误,异常信息如下:", task, e); Assert.fail(e.getMessage()); } } /** * 申请外来器械有病人信息等 */ @Test public void apply_foreignSetInformationTest() { String task = "申请器械包、敷料包(分单)"; try { logger.info("开始执行{}.........", task); ApplyGoodBo applyGoodBo = ApplyGoodBoFactory.createApplyNormalGoodBo(SettingConstants.一级供应室用户, ApplyBtnEnum.FOREIGN); ApplyHelper.openDeskTopIcon(applyGoodBo); applyServiceImpl.apply_foreignSetInformation(applyGoodBo); logger.info("执行{}结束.........", task); } catch (Exception e) { logger.error("{}发生错误,异常信息如下:", task, e); Assert.fail(e.getMessage()); } } /** * 直接申请外来器械 */ @Test public void apply_foreignSetTest() { String task = "申请器械包、敷料包(分单)"; try { logger.info("开始执行{}.........", task); ApplyGoodBo applyGoodBo = ApplyGoodBoFactory.createApplyNormalGoodBo(SettingConstants.一级供应室用户, ApplyBtnEnum.FOREIGN); ApplyHelper.openDeskTopIcon(applyGoodBo); applyServiceImpl.apply_foreignSet(applyGoodBo); logger.info("执行{}结束.........", task); } catch (Exception e) { logger.error("{}发生错误,异常信息如下:", task, e); Assert.fail(e.getMessage()); } } /** * 自定义器械申请 */ @Test public void apply_customTest() { String task = "自定义器械申请"; try { logger.info("开始执行{}.........", task); ApplyGoodBo applyGoodBo = ApplyGoodBoFactory.createApplyNormalGoodBo(SettingConstants.一级供应室用户, ApplyBtnEnum.CUSTOM); ApplyHelper.openDeskTopIcon(applyGoodBo); applyServiceImpl.apply_custom(applyGoodBo); logger.info("执行{}结束.........", task); } catch (Exception e) { logger.error("{}发生错误,异常信息如下:", task, e); Assert.fail(e.getMessage()); } } /** * 借物单 */ @Test public void apply_borrowTest() { String task = "借物单"; try { logger.info("开始执行{}.........", task); ApplyGoodBo applyGoodBo = ApplyGoodBoFactory.createBorrowApplyGoodBo(ApplyBtnEnum.BORROW); ApplyHelper.openDeskTopIcon(applyGoodBo); borrowApplyServiceImpl.apply_borrow(applyGoodBo); logger.info("执行{}结束.........", task); } catch (Exception e) { logger.error("{}发生错误,异常信息如下:", task, e); Assert.fail(e.getMessage()); } } /** * 测试非省医环境连续申请多张不同的申请单(从桌面开始) */ @Test public void doApplyForMultipleTest() { String task = "申请多张不同的申请单"; try { logger.info("开始执行{}.........", task); ChainConsumer.doApplyForMultiple(DeskIconEnum.OTHER); logger.info("执行{}结束.........", task); } catch (Exception e) { logger.error("{}发生错误,异常信息如下:", task, e); Assert.fail(e.getMessage()); } } @Test public void beforeApplyTest() { String task = "申请之前"; try { logger.info("开始执行{}.........", task); ChainConsumer.doBeforeApply(DeskIconEnum.OTHER); logger.info("执行{}结束.........", task); } catch (Exception e) { logger.error("{}发生错误,异常信息如下:", task, e); Assert.fail(e.getMessage()); } } /** * 借物单归还 */ // @Test @Deprecated 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()); } } @AfterMethod public void after() { Utils.driver.quit(); } }