Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/delivery/DeliveryPage.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/delivery/DeliveryPage.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/delivery/DeliveryPage.java (revision 33862) @@ -0,0 +1,7 @@ +package test.forgon.disinfectsystem.selenium3.page.delivery; + +import test.forgon.disinfectsystem.selenium3.basepage.BasePage; + +public class DeliveryPage extends BasePage { + +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyPage.java =================================================================== diff -u -r33785 -r33862 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyPage.java (.../ApplyPage.java) (revision 33785) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyPage.java (.../ApplyPage.java) (revision 33862) @@ -21,7 +21,6 @@ private By addTousseBtn = By.id("addTousseBt1");//添加按钮 private By commitBtn = By.id("commitBtn-btnIconEl");//提交按钮 private By commitConfirmBtn = By.linkText("是");//确认提交按钮 - private By commitTip = By.xpath("//*[@id='extTipMsg']");//提交后的提示信息 /** @@ -106,12 +105,4 @@ return get_element_until_clickable(this.commitConfirmBtn); } - /** - * 获取元素:确认提交后弹出的提示框(可能会有多条提示信息,只返回最后一条) - * @return - */ - public WebElement get_commit_tip(){ - List commitTipList = get_elements(this.commitTip); - return commitTipList.get(commitTipList.size()-1); - } } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sign/SignPage.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sign/SignPage.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sign/SignPage.java (revision 33862) @@ -0,0 +1,7 @@ +package test.forgon.disinfectsystem.selenium3.page.sign; + +import test.forgon.disinfectsystem.selenium3.basepage.BasePage; + +public class SignPage extends BasePage { + +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/AllTests.java =================================================================== diff -u -r33782 -r33862 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/AllTests.java (.../AllTests.java) (revision 33782) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/AllTests.java (.../AllTests.java) (revision 33862) @@ -17,7 +17,10 @@ test.forgon.disinfectsystem.selenium3.testscript.TestMainProcess.class, test.forgon.disinfectsystem.selenium3.testscript.TestApply.class, test.forgon.disinfectsystem.selenium3.testscript.TestRecycle.class, - test.forgon.disinfectsystem.selenium3.testscript.TestWash.class + test.forgon.disinfectsystem.selenium3.testscript.TestWash.class, + test.forgon.disinfectsystem.selenium3.testscript.TestPack.class, + test.forgon.disinfectsystem.selenium3.testscript.TestReview.class, + test.forgon.disinfectsystem.selenium3.testscript.TestSterilize.class }) public class AllTests { Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/userecord/UserecordHandle.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/userecord/UserecordHandle.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/userecord/UserecordHandle.java (revision 33862) @@ -0,0 +1,7 @@ +package test.forgon.disinfectsystem.selenium3.page.userecord; + +import test.forgon.disinfectsystem.selenium3.basepage.BaseHandle; + +public class UserecordHandle extends BaseHandle { + +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/wash/WashProxy.java =================================================================== diff -u -r33782 -r33862 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/wash/WashProxy.java (.../WashProxy.java) (revision 33782) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/wash/WashProxy.java (.../WashProxy.java) (revision 33862) @@ -26,7 +26,7 @@ public String disinfect_by_select_options(String disinfectMachineName,String disinfectProgram,String operator, JSONArray basketBarcodes){ try { washHandle.click_add_btn(); - Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); + Utils.driver.switchTo().defaultContent(); washHandle.click_disinfect_machine_name(); washHandle.select_disinfect_machine_option(disinfectMachineName); washHandle.click_disinfect_program(); @@ -42,12 +42,10 @@ //等待篮筐加载成功 Thread.sleep(2000); washHandle.click_save_btn(); - //等待提示框弹出 - Thread.sleep(1000); } catch (Exception e) { e.printStackTrace(); } - return washHandle.get_save_tip_msg(); + return Utils.get_ext_tip_msg(); } /** @@ -62,7 +60,7 @@ public String disinfect_by_scan_barcodes(String disinfectMachineBarcode,String disinfectProgramBarcode,String operator, JSONArray basketBarcodes){ try { washHandle.click_add_btn(); - Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); + Utils.driver.switchTo().defaultContent(); washHandle.input_barcode(disinfectMachineBarcode); washHandle.input_barcode(disinfectProgramBarcode); washHandle.input_barcode(operator);//操作人 @@ -76,12 +74,10 @@ //等待篮筐加载成功 Thread.sleep(2000); washHandle.click_save_btn(); - //等待提示框弹出 - Thread.sleep(1000); } catch (Exception e) { e.printStackTrace(); } - return washHandle.get_save_tip_msg(); + return Utils.get_ext_tip_msg(); } } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sterile/SterileProxy.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sterile/SterileProxy.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sterile/SterileProxy.java (revision 33862) @@ -0,0 +1,91 @@ +package test.forgon.disinfectsystem.selenium3.page.sterile; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; +import test.forgon.disinfectsystem.selenium3.Utils; + +/** + * 灭菌管理页面业务层 + * @author yuandongxiao + * + */ +public class SterileProxy { + //引入灭菌管理页面操作层 + private SterileHandle sterileHandle = new SterileHandle(); + + /** + * 通过点击选项来添加一条灭菌记录并完成灭菌 + * @param sterilizerName + * @param sterilizationProgram + * @param sterilizationPurpose + * @param operator + * @param barcodes + * @return + */ + public String sterilize_by_select_options(String sterilizerName,String sterilizationProgram,String sterilizationPurpose,JSONArray barcodes){ + try { + sterileHandle.click_add_btn(); + Utils.driver.switchTo().defaultContent(); + sterileHandle.click_sterilizer_name(); + sterileHandle.click_sterilizer_name_option(sterilizerName); + sterileHandle.click_sterilization_program(); + sterileHandle.click_sterilization_program_option(sterilizationProgram); + sterileHandle.click_sterilization_purpose(); + sterileHandle.click_sterilization_purpose_option(sterilizationPurpose); + //循环点击载入按钮 + for(int i=0;i result = Utils.getToussesBarcodes();//获取装配条码 + logger.debug("本次装配产生的包实例条码:"+result); + Assert.assertTrue(result!=null && result.size()>0);//如果获取到装配条码则断言装配成功 + } + + @After + public void tearDown() throws FileNotFoundException, WebDriverException, InterruptedException{ + //用例执行完成后,添加截图到测试报告 + Allure.addAttachment("测试用例完成截图", "image/png",new FileInputStream(((TakesScreenshot) Utils.driver).getScreenshotAs(OutputType.FILE)), ".png"); + //用例执行完成后将packingBarcodes清空 + Utils.packingBarcodes.clear(); + Utils.driver.navigate().refresh(); + personalDesktopProxy.exit_system(); + } + + @AfterClass + public static void tearDown_class(){ + Utils.quitDriver(); + } +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/pack/PackProxy.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/pack/PackProxy.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/pack/PackProxy.java (revision 33862) @@ -0,0 +1,38 @@ +package test.forgon.disinfectsystem.selenium3.page.pack; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + + +/** + * 装配管理页面业务层 + * @author yuandongxiao + * + */ +public class PackProxy { + //引入装配管理页面操作层 + private PackHandle packHandle = new PackHandle(); + + /** + * 普通装配 + * @param basketBarcodes + * @return + */ + public void normal_packing(JSONArray basketBarcodes,String operatorBarcode,String reviewerBarcode){ + try { + for(int i=0;i checkBoxList = packPage.get_check_box_in_the_upper_left_corner(); + for(int i=0;i packingBarcodes = new ArrayList();//装配产生的包实例条码 /** *初始化chrome浏览器驱动 @@ -259,4 +262,48 @@ e.printStackTrace(); } } + + + + /** + * 获取装配时创建的器械包的条码,为集合对象 + * + */ + public static List getToussesBarcodes() { + JavascriptExecutor js = (JavascriptExecutor) driver; + Object toussesStr = js.executeScript("return JSON.stringify(packingToussesArray)"); + JSONArray array = JSONArray.fromObject(toussesStr); + if (array != null) { + for (int i = 0; i < array.size(); i++) { + JSONObject tousse = array.getJSONObject(i); + JSONArray barcodeArray = tousse.getJSONArray("barcodes"); + for (int j = 0; j < barcodeArray.size(); j++) { + packingBarcodes.add((String) barcodeArray.get(j)); + } + } + } + return packingBarcodes; + } + + /** + * 获取提示信息 + * @return + */ + public static String get_ext_tip_msg(){ + try { + //等待1s,等候提示信息弹出来 + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + driver.switchTo().defaultContent(); + By extTip = By.xpath("//*[@id='extTipMsg']");//ext框架的提示信息 + //设置显式等待时间 + WebDriverWait wait = new WebDriverWait(driver,10); + //通过显式等待定位元素 + List extTips = wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(extTip)); + logger.debug("定位元素:"+extTips+"成功!"); + //可能页面上会显示多条提示信息,只取最后一条 + return extTips.get(extTips.size()-1).getText(); + } } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestReview.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestReview.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestReview.java (revision 33862) @@ -0,0 +1,112 @@ +package test.forgon.disinfectsystem.selenium3.testscript; + +import io.qameta.allure.Allure; +import io.qameta.allure.Feature; +import io.qameta.allure.Story; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.apache.log4j.Logger; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.openqa.selenium.OutputType; +import org.openqa.selenium.TakesScreenshot; +import org.openqa.selenium.WebDriverException; + +import test.forgon.disinfectsystem.selenium3.Utils; +import test.forgon.disinfectsystem.selenium3.page.login.LoginProxy; +import test.forgon.disinfectsystem.selenium3.page.personaldesktop.PersonalDesktopProxy; +import test.forgon.disinfectsystem.selenium3.page.review.ReviewProxy; + +/** + * 测试审核功能 + * @author yuandongxiao + * + */ +@Feature("测试审核功能") +public class TestReview { + public static Logger logger = Logger.getLogger(TestReview.class);//日志器 + private LoginProxy loginProxy = new LoginProxy(); + private PersonalDesktopProxy personalDesktopProxy = new PersonalDesktopProxy(); + private ReviewProxy reviewProxy = new ReviewProxy(); + private static JSONObject reviewByScanBarcodesJsonObj;//通过扫码来审核的用例参数 + private static JSONObject reviewByClickBtnsJsonObj;//通过点击来审核的用例参数 + private static JSONObject reviewUseSterilizationJsonObj;//使用灭菌篮筐来审核的用例参数 + + @BeforeClass + public static void setUp_class(){ + Utils.init(); + reviewByScanBarcodesJsonObj = Utils.testcaseData.getJSONObject("test_review_by_scan_barcodes"); + reviewByClickBtnsJsonObj = Utils.testcaseData.getJSONObject("test_review_by_click_btns"); + reviewUseSterilizationJsonObj = Utils.testcaseData.getJSONObject("test_review_use_sterilization_basket"); + } + + @Story("测试通过扫码来进行审核") + @Test + public void test_review_by_scan_barcodes() { + JSONObject reviewer = reviewByScanBarcodesJsonObj.getJSONObject("reviewer");//操作人 + String taskGroup = reviewByScanBarcodesJsonObj.getString("task_group");//装配任务 + JSONArray tousseBarcodes = reviewByScanBarcodesJsonObj.getJSONArray("tousse_barcodes");//待审核的器械包条码 + String expect = reviewByScanBarcodesJsonObj.getString("expect");//预期结果 + + //用户登录 + loginProxy.go_login_by_btn(reviewer.getString("username"), reviewer.getString("password")); + //审核 + personalDesktopProxy.go_review(taskGroup); + String result = reviewProxy.review_by_scan_barcodes(reviewer.getString("barcode"), tousseBarcodes); + Assert.assertTrue(result.contains(expect)); + } + + @Story("测试通过点击按钮来进行审核") + @Test + public void test_review_by_click_btns() { + JSONObject reviewer = reviewByClickBtnsJsonObj.getJSONObject("reviewer");//操作人 + String taskGroup = reviewByClickBtnsJsonObj.getString("task_group");//装配任务 + JSONArray tousseBarcodes = reviewByClickBtnsJsonObj.getJSONArray("tousse_barcodes");//待审核的器械包条码 + String expect = reviewByClickBtnsJsonObj.getString("expect");//预期结果 + + //用户登录 + loginProxy.go_login_by_btn(reviewer.getString("username"), reviewer.getString("password")); + //审核 + personalDesktopProxy.go_review(taskGroup); + String result = reviewProxy.review_by_click_btns(reviewer.getString("barcode"), tousseBarcodes); + Assert.assertTrue(result.contains(expect)); + } + + + @Story("测试使用灭菌篮筐来进行审核") + @Test + public void test_review_use_sterilization_basket() { + JSONObject reviewer = reviewUseSterilizationJsonObj.getJSONObject("reviewer");//操作人 + String taskGroup = reviewUseSterilizationJsonObj.getString("task_group");//装配任务 + JSONArray tousseBarcodes = reviewUseSterilizationJsonObj.getJSONArray("tousse_barcodes");//待审核的器械包条码 + String SterilizationBasket = reviewUseSterilizationJsonObj.getString("sterilization_basket");//灭菌篮筐 + String expect = reviewUseSterilizationJsonObj.getString("expect");//预期结果 + + //用户登录 + loginProxy.go_login_by_btn(reviewer.getString("username"), reviewer.getString("password")); + //审核 + personalDesktopProxy.go_review(taskGroup); + String result = reviewProxy.review_use_sterilization_basket(reviewer.getString("barcode"),SterilizationBasket, tousseBarcodes); + Assert.assertTrue(result.contains(expect)); + } + + @After + public void tearDown() throws FileNotFoundException, WebDriverException, InterruptedException{ + //用例执行完成后,添加截图到测试报告 + Allure.addAttachment("测试用例完成截图", "image/png",new FileInputStream(((TakesScreenshot) Utils.driver).getScreenshotAs(OutputType.FILE)), ".png"); + personalDesktopProxy.exit_system(); + } + + @AfterClass + public static void tearDown_class(){ + Utils.quitDriver(); + } +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/wash/WashHandle.java =================================================================== diff -u -r33782 -r33862 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/wash/WashHandle.java (.../WashHandle.java) (revision 33782) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/wash/WashHandle.java (.../WashHandle.java) (revision 33862) @@ -71,11 +71,4 @@ washPage.get_save_btn().click(); } - /** - * 获取保存后的弹出框信息 - * @return - */ - public String get_save_tip_msg(){ - return washPage.get_save_tip().getText(); - } } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sign/SignHandle.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sign/SignHandle.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sign/SignHandle.java (revision 33862) @@ -0,0 +1,7 @@ +package test.forgon.disinfectsystem.selenium3.page.sign; + +import test.forgon.disinfectsystem.selenium3.basepage.BaseHandle; + +public class SignHandle extends BaseHandle { + +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyProxy.java =================================================================== diff -u -r33782 -r33862 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyProxy.java (.../ApplyProxy.java) (revision 33782) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyProxy.java (.../ApplyProxy.java) (revision 33862) @@ -23,7 +23,7 @@ @Step("申领物品:通用申请单") public String apply_combo_tousse(String handleDepart,JSONArray tousseArray){ applyHandle.click_apply_combo_btn(); - Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); + Utils.driver.switchTo().defaultContent(); applyHandle.input_handle_depart(handleDepart); applyHandle.click_handle_depart_combo_option(handleDepart); //循环添加物品 @@ -38,7 +38,7 @@ } applyHandle.click_commit_btn(); applyHandle.click_commit_confirm_btn(); - return applyHandle.get_commit_tip_msg(); + return Utils.get_ext_tip_msg(); } /** @@ -50,8 +50,7 @@ @Step("申领物品:器械包申请单") public String apply_tousse(String handleDepart,JSONArray tousseList){ applyHandle.click_apply_tousse_btn(); - String currentwindowhandle = Utils.driver.getWindowHandle(); - Utils.driver.switchTo().window(currentwindowhandle); + Utils.driver.switchTo().defaultContent(); applyHandle.input_handle_depart(handleDepart); applyHandle.click_handle_depart_combo_option(handleDepart); //循环添加物品 @@ -66,6 +65,6 @@ } applyHandle.click_commit_btn(); applyHandle.click_commit_confirm_btn(); - return applyHandle.get_commit_tip_msg(); + return Utils.get_ext_tip_msg(); } } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/delivery/DeliveryHandle.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/delivery/DeliveryHandle.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/delivery/DeliveryHandle.java (revision 33862) @@ -0,0 +1,7 @@ +package test.forgon.disinfectsystem.selenium3.page.delivery; + +import test.forgon.disinfectsystem.selenium3.basepage.BaseHandle; + +public class DeliveryHandle extends BaseHandle { + +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sterile/SterilePage.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sterile/SterilePage.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sterile/SterilePage.java (revision 33862) @@ -0,0 +1,153 @@ +package test.forgon.disinfectsystem.selenium3.page.sterile; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import test.forgon.disinfectsystem.selenium3.basepage.BasePage; + +/** + * 灭菌管理页面对象库层 + * @author yuandongxiao + * + */ +public class SterilePage extends BasePage { + private By sterilizationFrame = By.id("iframe_sterilizationRecord");//灭菌管理标签页 + private By addBtn = By.id("addBtn");//添加按钮 + private By sterilizerName = By.id("sterilizerName");//灭菌炉名称 + private By sterilizationProgram = By.id("sterilizationType");//灭菌程序 + private By sterilizationPurpose = By.id("sterilizationPurpose");//灭菌目的 + private By inputBarcode = By.id("inputBarcode");//扫描条码框 + private By saveBtn = By.id("saveBtn");//保存按钮 + private By sterilizingRecord = By.xpath("//p[text()='灭菌中']");//灭菌中的记录 + private By completeSterilizationBtn = By.id("completeSterilizationBtn");//完成灭菌按钮 + private By confirmCompleteBtn = By.xpath("//button[text()='是']");//确认完成灭菌按钮 + private By extTip = By.cssSelector(".extTipMsg");//页面提示信息 + + /** + * 获取添加按钮 + * @return + */ + public WebElement get_add_btn(){ + return get_element_until_clickable(this.addBtn); + } + + /** + * 获取灭菌炉名称 + * @return + */ + public WebElement get_sterilizer_name(){ + return get_element_until_clickable(this.sterilizerName); + } + + /** + * 获取灭菌炉名称选项 + * @param sterilizerName + * @return + */ + public WebElement get_sterilizer_name_option(String sterilizerName){ + By sterilizerOption = By.xpath("//div[contains(text(),'"+sterilizerName+"')]");//灭菌炉名称选项 + return get_element_until_clickable(sterilizerOption); + } + + /** + * 获取灭菌程序 + * @return + */ + public WebElement get_sterilization_program(){ + return get_element_until_clickable(this.sterilizationProgram); + } + + /** + * 获取灭菌程序选项 + * @param sterilizerName + * @return + */ + public WebElement get_sterilization_program_option(String sterilizationProgram){ + By sterilizationProgramOption = By.xpath("//div[contains(text(),'"+sterilizationProgram+"')]");//灭菌炉程序选项 + return get_element_until_clickable(sterilizationProgramOption); + } + + /** + * 获取灭菌目的 + * @return + */ + public WebElement get_sterilization_purpose(){ + return get_element_until_clickable(sterilizationPurpose); + } + + /** + * 获取灭菌目的选项 + * @param sterilizerName + * @return + */ + public WebElement get_sterilization_purpose_option(String sterilizationPurpose){ + By sterilizationPurposeOption = By.xpath("//div[contains(text(),'"+sterilizationPurpose+"')]");//灭菌目的选项 + return get_element_until_clickable(sterilizationPurposeOption); + } + + /** + * 获取扫描条码框 + * @return + */ + public WebElement get_input_barcode(){ + return get_element_until_clickable(this.inputBarcode); + } + + /** + * 获取物品对应的载入按钮 + * @param basketBarcode + * @return + */ + public WebElement get_load_btn(String barcode){ + By loadBtn = By.xpath("//img[contains(@onclick,'"+barcode+"')]");//物品对应的载入按钮 + return get_element_until_clickable(loadBtn); + } + + /** + * 获取保存按钮 + * @return + */ + public WebElement get_save_btn(){ + return get_element_until_clickable(saveBtn); + } + + /** + * 获取灭菌中的记录 + * @return + */ + public WebElement get_sterilizing_record(){ + return get_element_until_visibility(sterilizingRecord); + } + + /** + * 获取完成灭菌按钮 + * @return + */ + public WebElement get_complete_sterilization_btn(){ + return get_element_until_clickable(completeSterilizationBtn); + } + + /** + * 获取灭菌标签页 + * @return + */ + public WebElement get_sterilization_frame(){ + return get_element_until_visibility(sterilizationFrame); + } + + /** + * 获取确认完成灭菌按钮 + * @return + */ + public WebElement get_confirm_complete_btn(){ + return get_element_until_clickable(confirmCompleteBtn); + } + + /** + * 获取提示信息框 + * @return + */ + public WebElement get_ext_tip(){ + return get_element_until_visibility(extTip); + } +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestSterilize.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestSterilize.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestSterilize.java (revision 33862) @@ -0,0 +1,102 @@ +package test.forgon.disinfectsystem.selenium3.testscript; + +import io.qameta.allure.Allure; +import io.qameta.allure.Feature; +import io.qameta.allure.Story; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.apache.log4j.Logger; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; +import org.openqa.selenium.OutputType; +import org.openqa.selenium.TakesScreenshot; +import org.openqa.selenium.WebDriverException; + +import test.forgon.disinfectsystem.selenium3.Utils; +import test.forgon.disinfectsystem.selenium3.page.login.LoginProxy; +import test.forgon.disinfectsystem.selenium3.page.personaldesktop.PersonalDesktopProxy; +import test.forgon.disinfectsystem.selenium3.page.sterile.SterileProxy; + +/** + * 测试灭菌模块功能 + * @author yuandongxiao + * + */ +@Feature("测试灭菌功能") +public class TestSterilize { + public static Logger logger = Logger.getLogger(TestSterilize.class);//日志器 + private LoginProxy loginProxy = new LoginProxy(); + private SterileProxy sterileProxy = new SterileProxy(); + private PersonalDesktopProxy personalDesktopProxy = new PersonalDesktopProxy(); + private static JSONObject normalSterilizeJsonObj;//普通灭菌测试用例参数 + + + @BeforeClass + public static void setUp_class(){ + Utils.init(); + normalSterilizeJsonObj = Utils.testcaseData.getJSONObject("test_normal_sterilize"); + } + + @Story("通过点击选项来添加一条灭菌记录") + @Ignore + @Test + public void test_disinfect_by_select_options() { + JSONObject operator = normalSterilizeJsonObj.getJSONObject("operator");//操作人 + String sterilizationGroup = normalSterilizeJsonObj.getString("sterilization_group");//灭菌炉分组 + String sterilizerName = normalSterilizeJsonObj.getJSONObject("sterilizer").getString("name");//灭菌炉名称 + String sterilizationProgram = normalSterilizeJsonObj.getJSONObject("sterilization_program").getString("name");//灭菌程序名称 + String sterilizationPurpose = normalSterilizeJsonObj.getString("sterilization_purpose");//灭菌目的 + JSONArray barcodes = normalSterilizeJsonObj.getJSONArray("barcodes_1");//待灭菌物品条码 + String expect = normalSterilizeJsonObj.getString("expect");//预期结果 + + //登录 + loginProxy.go_login_by_btn(operator.getString("username"), operator.getString("password")); + personalDesktopProxy.go_sterilization(sterilizationGroup); + //灭菌 + String result = sterileProxy.sterilize_by_select_options(sterilizerName, sterilizationProgram, sterilizationPurpose, barcodes); + Assert.assertTrue(result.contains(expect)); + } + + @Story("通过扫码来添加一条灭菌记录") + @Test + public void test_disinfect_by_scan_barcodes(){ + JSONObject operator = normalSterilizeJsonObj.getJSONObject("operator");//操作人 + String sterilizationGroup = normalSterilizeJsonObj.getString("sterilization_group");//灭菌炉分组 + String sterilizerBarcode = normalSterilizeJsonObj.getJSONObject("sterilizer").getString("barcode");//灭菌炉条码 + String sterilizationProgramBarcode = normalSterilizeJsonObj.getJSONObject("sterilization_program").getString("barcode");//灭菌程序条码 + String sterilizationPurpose = normalSterilizeJsonObj.getString("sterilization_purpose");//灭菌目的 + JSONArray barcodes = normalSterilizeJsonObj.getJSONArray("barcodes_2");//待灭菌物品条码 + String expect = normalSterilizeJsonObj.getString("expect");//预期结果 + + //登录 + loginProxy.go_login_by_btn(operator.getString("username"), operator.getString("password")); + + //灭菌 + personalDesktopProxy.go_sterilization(sterilizationGroup); + String result = sterileProxy.sterilize_by_scan_barcodes(sterilizerBarcode, sterilizationProgramBarcode, sterilizationPurpose, barcodes); + Assert.assertTrue(result.contains(expect)); + } + + @After + public void tearDown() throws FileNotFoundException, WebDriverException, InterruptedException{ + //用例跑完后,添加截图到测试报告 + Allure.addAttachment("测试用例完成截图", "image/png",new FileInputStream(((TakesScreenshot) Utils.driver).getScreenshotAs(OutputType.FILE)), ".png"); + //退出系统 + Utils.driver.navigate().refresh(); + personalDesktopProxy.exit_system(); + } + + @AfterClass + public static void tearDown_class(){ + Utils.quitDriver(); + } +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/review/ReviewHandle.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/review/ReviewHandle.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/review/ReviewHandle.java (revision 33862) @@ -0,0 +1,71 @@ +package test.forgon.disinfectsystem.selenium3.page.review; + +import org.apache.log4j.Logger; +import org.openqa.selenium.TimeoutException; +import org.openqa.selenium.WebElement; + +import test.forgon.disinfectsystem.selenium3.basepage.BaseHandle; + +/** + * 审核打包操作层 + * @author yuandongxiao + * + */ +public class ReviewHandle extends BaseHandle { + + public static Logger logger = Logger.getLogger(ReviewHandle.class);//日志器 + + //引入审核打包对象库层 + private ReviewPage reviewPage = new ReviewPage(); + + /** + * 扫描条码 + * @param barcode + */ + public void scan_barcode(String barcode){ + input_text(reviewPage.get_barcodes_input(), barcode+"\n"); + } + + /** + * 点击进入审核列表按钮 + */ + public void click_into_review_list_btn(){ + reviewPage.get_into_review_list_btn().click(); + } + + /** + * 点击包内【指示卡】及材料无误确认按钮 + */ + public void click_confirm_btn(){ + try { + WebElement confirmBtn = reviewPage.get_confirm_btn(); + confirmBtn.click(); + } catch (TimeoutException e) { + logger.info("未找到包内【指示卡】及材料无误确认按钮!"); + } + } + + /** + * 点击待审核任务列表上的包实例条码 + * @param barcode + */ + public void click_await_for_review_tousse_barcode(String barcode){ + reviewPage.get_await_for_review_tousse_barcode(barcode).click(); + } + + /** + * 点击审核物品按钮 + */ + public void click_review_tousse_btn(){ + reviewPage.get_review_tousse_btn().click(); + } + + + /** + * 点击审核并打印标签按钮 + */ + public void click_review_and_print_btn(){ + reviewPage.get_review_and_print_btn().click(); + } + +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sign/SignProxy.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sign/SignProxy.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sign/SignProxy.java (revision 33862) @@ -0,0 +1,5 @@ +package test.forgon.disinfectsystem.selenium3.page.sign; + +public class SignProxy { + +} Index: ssts-web/src/test/resources/test/forgon/disinfectsystem/selenium/config/all/testcase_data.json =================================================================== diff -u -r33782 -r33862 --- ssts-web/src/test/resources/test/forgon/disinfectsystem/selenium/config/all/testcase_data.json (.../testcase_data.json) (revision 33782) +++ ssts-web/src/test/resources/test/forgon/disinfectsystem/selenium/config/all/testcase_data.json (.../testcase_data.json) (revision 33862) @@ -106,5 +106,87 @@ {"basketBarcode":"010011006"} ], "expect":"保存成功" + }, + "test_normal_packing":{ + "operator":{ + "username":"cssduser1", + "password":"1", + "barcode":"0100001001" + }, + "task_group":"术科组", + "basket_barcodes":[ + {"basketBarcode":"010011011"} + ] + }, + "test_review_by_scan_barcodes":{ + "reviewer":{ + "username":"cssduser1", + "password":"1", + "barcode":"0100001001" + }, + "task_group":"常规组", + "tousse_barcodes":[ + {"tousseBarcode":"010013026"}, + {"tousseBarcode":"010013031"}, + {"tousseBarcode":"010013036"} + ], + "expect":"审核成功" + }, + "test_review_by_click_btns":{ + "reviewer":{ + "username":"cssduser1", + "password":"1", + "barcode":"0100001001" + }, + "task_group":"常规组", + "tousse_barcodes":[ + {"tousseBarcode":"010013027"}, + {"tousseBarcode":"010013032"}, + {"tousseBarcode":"010013037"} + ], + "expect":"审核成功" + }, + "test_review_use_sterilization_basket":{ + "reviewer":{ + "username":"cssduser1", + "password":"1", + "barcode":"0100001001" + }, + "task_group":"常规组", + "sterilization_basket":"018000001", + "tousse_barcodes":[ + {"tousseBarcode":"010013028"}, + {"tousseBarcode":"010013033"}, + {"tousseBarcode":"010013038"} + ], + "expect":"审核成功" + }, + "test_normal_sterilize":{ + "operator":{ + "username":"cssduser1", + "password":"1", + "barcode":"0100001001" + }, + "sterilization_group":"大型压力蒸汽", + "sterilizer":{ + "name":"1号高温蒸汽灭菌炉", + "barcode":"010175001" + }, + "sterilization_program":{ + "name":"P01", + "barcode":"010174001" + }, + "sterilization_purpose":"器械包灭菌", + "barcodes_1":[ + {"barcode":"010013063"}, + {"barcode":"010013068"}, + {"barcode":"010013073"} + ], + "barcodes_2":[ + {"barcode":"010013064"}, + {"barcode":"010013069"}, + {"barcode":"010013074"} + ], + "expect":"完成灭菌" } } \ No newline at end of file Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/personaldesktop/PersonalDesktopPage.java =================================================================== diff -u -r33785 -r33862 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/personaldesktop/PersonalDesktopPage.java (.../PersonalDesktopPage.java) (revision 33785) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/personaldesktop/PersonalDesktopPage.java (.../PersonalDesktopPage.java) (revision 33862) @@ -7,6 +7,11 @@ import test.forgon.disinfectsystem.selenium3.basepage.BasePage; +/** + * 个人桌面对象库层 + * @author yuandongxiao + * + */ public class PersonalDesktopPage extends BasePage{ private By welcomeLable = By.className("green1");//欢迎标签 @@ -17,8 +22,13 @@ private By recycleIcon = By.xpath("//*[@id='recyclingRecordTouchScreen']//img");//回收清点图标 private By washIcon = By.xpath("//*[@id='washAndDisinfect']//img");//清洗消毒图标 private By washFrame = By.id("iframe_washAndDisinfect");//清洗消毒标签页 + private By packIcon = By.xpath("//img[@id='packingImg']");//装配管理图标 + private By packFrame = By.id("iframe_packing");//装配管理标签页 + private By reviewIcon = By.id("reviewPackingImg");//审核打包图标 + private By reviewFrame = By.id("iframe_reviewPacking");//审核打包标签页 + private By sterilizationIcon = By.id("sterilizationRecordImg");//灭菌管理图标 + private By sterilizationFrame = By.id("iframe_sterilizationRecord");//灭菌管理标签页 - /** * 获取欢迎标签 * @return @@ -82,4 +92,72 @@ public WebElement get_wash_frame(){ return get_element_until_visibility(this.washFrame); } + + /** + * 获取装配管理图标 + * @return + */ + public WebElement get_pack_icon(){ + return get_element_until_visibility(this.packIcon); + } + + /** + * 获取装配任务组悬浮框 + * @param Item + * @return + */ + public WebElement get_task_group(String taskGroupName){ + By taskGroup = By.linkText(taskGroupName); + return get_element_until_clickable(taskGroup); + } + + /** + * 获取装配管理标签页 + * @return + */ + public WebElement get_pack_frame(){ + return get_element_until_visibility(this.packFrame); + } + + /** + * 获取审核打包图标 + * @return + */ + public WebElement get_review_icon(){ + return get_element_until_visibility(this.reviewIcon); + } + + /** + * 获取审核打包标签页 + * @return + */ + public WebElement get_review_frame(){ + return get_element_until_visibility(this.reviewFrame); + } + + /** + * 获取灭菌管理图标 + * @return + */ + public WebElement get_sterilization_icon(){ + return get_element_until_visibility(this.sterilizationIcon); + } + + /** + * 获取灭菌分组悬浮框 + * @param sterilizationGroupName + * @return + */ + public WebElement get_sterilization_group(String sterilizationGroupName){ + By sterilizationGroup = By.linkText(sterilizationGroupName); + return get_element_until_clickable(sterilizationGroup); + } + + /** + * 获取灭菌管理标签页 + * @return + */ + public WebElement get_sterilization_frame(){ + return get_element_until_visibility(this.sterilizationFrame); + } } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/personaldesktop/PersonalDesktopProxy.java =================================================================== diff -u -r33785 -r33862 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/personaldesktop/PersonalDesktopProxy.java (.../PersonalDesktopProxy.java) (revision 33785) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/personaldesktop/PersonalDesktopProxy.java (.../PersonalDesktopProxy.java) (revision 33862) @@ -67,4 +67,36 @@ personalDesktopHandle.switch_to_wash_frame(); } + /** + * 点击跳转到装配管理标签页 + * @param taskGroup + */ + @Step("点击跳转到装配管理标签页") + public void go_pack(String taskGroup){ + personalDesktopHandle.hover_on_pack_icon(); + personalDesktopHandle.click_tack_group(taskGroup); + personalDesktopHandle.switch_to_pack_frame(); + } + + /** + * 点击跳转到审核打包标签页 + * @param taskGroup + */ + @Step("点击跳转到审核打包标签页") + public void go_review(String taskGroup){ + personalDesktopHandle.hover_on_review_icon(); + personalDesktopHandle.click_tack_group(taskGroup); + personalDesktopHandle.switch_to_review_frame(); + } + + /** + * 点击跳转到灭菌管理标签页 + * @param sterilizationGroup + */ + @Step("点击跳转到灭菌管理标签页") + public void go_sterilization(String sterilizationGroup){ + personalDesktopHandle.hover_on_sterilization_icon(); + personalDesktopHandle.click_sterilization_group(sterilizationGroup); + personalDesktopHandle.switch_to_sterilization_frame(); + } } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/review/ReviewProxy.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/review/ReviewProxy.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/review/ReviewProxy.java (revision 33862) @@ -0,0 +1,75 @@ +package test.forgon.disinfectsystem.selenium3.page.review; + +import test.forgon.disinfectsystem.selenium3.Utils; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +/** + * 审核打包业务层 + * @author yuandongxiao + * + */ +public class ReviewProxy { + //引入审核打包操作层 + private ReviewHandle reviewHandle = new ReviewHandle(); + + /** + * 通过扫描条码审核物品 + * @param reviewerBarcode + * @param tousseBarcodes + * @return + */ + public String review_by_scan_barcodes(String reviewerBarcode,JSONArray tousseBarcodes){ + reviewHandle.scan_barcode(reviewerBarcode); + //循环添加待审核物品 + for(int i=0;i get_check_box_in_the_upper_left_corner(){ + return get_elements(checkBoxInTheUpperLeftCorner); + } + + /** + * 获取标识牌条码框 + * @return + */ + public WebElement get_scan_id_card_barcode(){ + return get_element_until_clickable(scanIdCardBarcode); + } + + /** + * 获取配包人条码框 + * @return + */ + public WebElement get_operator_barcode(){ + return get_element_until_clickable(operatorBarcode); + } + + /** + * 获取审核人条码框 + * @return + */ + public WebElement get_reviewer_barcode(){ + return get_element_until_clickable(reviewerBarcode); + } + + /** + * 获取灭菌程序框 + * @return + */ + public WebElement get_steriling_type(){ + return get_element_until_clickable(sterilingType); + } + + /** + * 获取灭菌程序选项 + * @param sterilingType + * @return + */ + public WebElement get_steriling_type_option(String sterilingType){ + By sterilingTypeOption = By.xpath("//li[contains(text(),'"+sterilingType+"')]"); + return get_element_until_clickable(sterilingTypeOption); + } + + /** + * 获取包装类型框 + * @return + */ + public WebElement get_package_type(){ + return get_element_until_clickable(packageType); + } + + /** + * 获取包装类型选项 + * @param packageType + * @return + */ + public WebElement get_package_type_option(String packageType){ + By packageTypeOption = By.xpath("//li[contains(text(),'"+packageType+"')]"); + return get_element_until_clickable(packageTypeOption); + } + + /** + * 获取装配并打印标签按钮 + * @return + */ + public WebElement get_save_and_print_btn(){ + return get_element_until_clickable(saveAndPrintBtn); + } +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/personaldesktop/PersonalDesktopHandle.java =================================================================== diff -u -r33782 -r33862 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/personaldesktop/PersonalDesktopHandle.java (.../PersonalDesktopHandle.java) (revision 33782) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/personaldesktop/PersonalDesktopHandle.java (.../PersonalDesktopHandle.java) (revision 33862) @@ -5,6 +5,7 @@ import org.apache.log4j.Logger; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; import test.forgon.disinfectsystem.selenium3.Utils; import test.forgon.disinfectsystem.selenium3.basepage.BaseHandle; @@ -24,13 +25,11 @@ * @throws InterruptedException */ public void click_warning_win_close_btns(){ - List element_list = null; try { - element_list = personalDesktopPage.get_warning_win_close_btns(); + List element_list = personalDesktopPage.get_warning_win_close_btns(); + Utils.closeWarningWins(element_list); } catch (TimeoutException e) { logger.info("没有需要关闭的告警框"); - }finally{ - Utils.closeWarningWins(element_list); } } @@ -85,4 +84,65 @@ Utils.driver.switchTo().frame(personalDesktopPage.get_wash_frame()); } + /** + * 鼠标悬浮在装配管理图标上 + */ + public void hover_on_pack_icon(){ + Actions actions = new Actions(Utils.driver); + actions.moveToElement(personalDesktopPage.get_pack_icon()).perform(); + } + + + /** + * 点击装配任务组名称 + * @param taskGroup + */ + public void click_tack_group(String taskGroup){ + personalDesktopPage.get_task_group(taskGroup).click(); + } + + /** + * 跳转到装配管理标签页 + */ + public void switch_to_pack_frame(){ + Utils.driver.switchTo().frame(personalDesktopPage.get_pack_frame()); + } + + /** + * 鼠标悬浮在审核打包图标上 + */ + public void hover_on_review_icon(){ + Actions actions = new Actions(Utils.driver); + actions.moveToElement(personalDesktopPage.get_review_icon()).perform(); + } + + /** + * 跳转到审核打包标签页 + */ + public void switch_to_review_frame(){ + Utils.driver.switchTo().frame(personalDesktopPage.get_review_frame()); + } + + /** + * 鼠标悬浮在灭菌管理图标上 + */ + public void hover_on_sterilization_icon(){ + Actions actions = new Actions(Utils.driver); + actions.moveToElement(personalDesktopPage.get_sterilization_icon()).perform(); + } + + /** + * 点击灭菌炉分组 + * @param sterilizationGroup + */ + public void click_sterilization_group(String sterilizationGroup){ + personalDesktopPage.get_sterilization_group(sterilizationGroup).click(); + } + + /** + * 跳转到灭菌管理标签页 + */ + public void switch_to_sterilization_frame(){ + Utils.driver.switchTo().frame(personalDesktopPage.get_sterilization_frame()); + } } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestWash.java =================================================================== diff -u -r33785 -r33862 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestWash.java (.../TestWash.java) (revision 33785) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestWash.java (.../TestWash.java) (revision 33862) @@ -36,7 +36,7 @@ private LoginProxy loginProxy = new LoginProxy(); private WashProxy washProxy = new WashProxy(); private PersonalDesktopProxy personalDesktopProxy = new PersonalDesktopProxy(); - private static JSONObject normalWashJsonObj;//通用申请单测试用例参数 + private static JSONObject normalWashJsonObj;//普通清洗测试用例参数 @BeforeClass Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/wash/WashPage.java =================================================================== diff -u -r33785 -r33862 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/wash/WashPage.java (.../WashPage.java) (revision 33785) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/wash/WashPage.java (.../WashPage.java) (revision 33862) @@ -1,7 +1,5 @@ package test.forgon.disinfectsystem.selenium3.page.wash; -import java.util.List; - import org.openqa.selenium.By; import org.openqa.selenium.WebElement; @@ -18,7 +16,6 @@ private By disinfectProgram = By.id("disinfectProgram");//清洗程序 private By scanBarcode = By.id("inputText");//扫描条码输入框 private By saveBtn = By.id("saveBtn");//保存按钮 - private By saveTip = By.xpath("//*[@id='extTipMsg']");//保存后的提示信息 /** * 获取添加按钮 @@ -90,12 +87,4 @@ return get_element_until_clickable(loadBasketBtn); } - /** - * 获取保存后弹出的提示框(可能会有多条提示信息,只返回最后一条) - * @return - */ - public WebElement get_save_tip(){ - List saveTipList = get_elements(this.saveTip); - return saveTipList.get(saveTipList.size()-1); - } }