Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/recycle/AwaitForRecycleHandle.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/recycle/AwaitForRecycleHandle.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/recycle/AwaitForRecycleHandle.java (revision 33782) @@ -0,0 +1,39 @@ +package test.forgon.disinfectsystem.selenium3.page.recycle; + +import org.openqa.selenium.support.ui.Select; + +import test.forgon.disinfectsystem.selenium3.basepage.BaseHandle; + +/** + * 待回收页面操作层 + * @author yuandongxiao + * + */ +public class AwaitForRecycleHandle extends BaseHandle { + //引入待回收页面对象库层 + private AwaitForRecyclePage awaitForRecyclePage = new AwaitForRecyclePage(); + + /** + * 根据显示的文本选择申请单类型下拉框 + * @param visibleText + */ + public void select_app_type_by_visible_text(String visibleText){ + Select appTypeSelect = new Select(awaitForRecyclePage.get_app_type_select()); + appTypeSelect.selectByVisibleText(visibleText); + } + + /** + * 点击最后修改时间 + */ + public void click_last_modified_time(){ + awaitForRecyclePage.get_last_modified_time().click(); + } + + /** + * 点击待回收列表中的第一张申请单 + */ + public void click_first_application_in_await_for_recycle_table(){ + awaitForRecyclePage.get_first_application_in_await_for_recycle_table().click(); + } + +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/login/LoginProxy.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/login/LoginProxy.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/login/LoginProxy.java (revision 33782) @@ -0,0 +1,43 @@ +package test.forgon.disinfectsystem.selenium3.page.login; + +import io.qameta.allure.Step; + +/** + * 登录页面业务层 + * @author yuandongxiao + * + */ +public class LoginProxy { + //引入登录页面操作层 + private LoginHandle loginHandle = new LoginHandle(); + + /** + * 通过用户名、密码进行登录 + * @param username + * @param password + */ + @Step("通过用户名、密码进行登录") + public void go_login_by_btn(String username,String password){ + loginHandle.input_username(username); + loginHandle.input_password(password); + loginHandle.click_login_btn(); + } + + /** + * 通过扫码进行登录 + * @param barcode + */ + @Step("通过扫码进行登录") + public void go_login_by_barcode(String barcode){ + loginHandle.input_username(barcode+"\n"); + } + + /** + * 获取登录提示信息 + * @return + */ + @Step("获取登录提示信息") + public String get_login_tip(){ + return loginHandle.get_tip_text(); + } +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/Utils.java =================================================================== diff -u -r33709 -r33782 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/Utils.java (.../Utils.java) (revision 33709) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/Utils.java (.../Utils.java) (revision 33782) @@ -9,17 +9,23 @@ import java.io.InputStreamReader; import java.util.List; import java.util.Scanner; +import java.util.Set; import net.sf.json.JSONObject; import org.apache.log4j.Logger; +import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.ie.InternetExplorerOptions; +import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; + import com.fasterxml.jackson.core.JsonParser.Feature; import com.fasterxml.jackson.databind.ObjectMapper; import com.forgon.tools.util.ConfigUtils; @@ -42,7 +48,10 @@ *初始化chrome浏览器驱动 */ public static void initChromeDriver() { - driver = new ChromeDriver(); + ChromeOptions options = new ChromeOptions(); + //去掉"chrome正受自动化测试工具控制"的提示 + options.setExperimentalOption( "excludeSwitches" , new String[]{ "enable-automation" }); + driver = new ChromeDriver(options); driver.manage().window().maximize(); driver.get(serverAddress); } @@ -79,8 +88,6 @@ mapper.configure(Feature.ALLOW_SINGLE_QUOTES, true); try { - // 获取config.js文件信息 -// InputStream instream1 = Utils.class.getClassLoader().getResourceAsStream(configFilePath + projectName + "/config.js"); //获取json文件的信息 InputStream instream = Utils.class.getClassLoader().getResourceAsStream(filePath); Scanner scanner = new Scanner(instream); @@ -133,14 +140,15 @@ * @param value * @return */ - private static JSONObject writeConfigInfo(String configFilePath , String key , Object value){ + public static void setConfigJs(String key , Object value){ JSONObject jsonObj = null; ObjectMapper mapper = new ObjectMapper().configure(Feature.ALLOW_COMMENTS, true); mapper.configure(Feature.ALLOW_UNQUOTED_FIELD_NAMES, true); mapper.configure(Feature.ALLOW_SINGLE_QUOTES, true); Scanner scan = null; try { String rootPath = Utils.settings.get("configJSPath").toString() + "/disinfectsystem/config/"; + String configFilePath = ConfigUtils.getProjectName() + "/config.js"; String content = readFullFile(rootPath + configFilePath); int startIndex = content.indexOf("{"); //json变量定义的头(即左花括号之前的部分) @@ -164,28 +172,18 @@ scan.close(); } } - return jsonObj; } /** - * 根据key与value对config.js的进行设值 - * @param key - * @return + * 配置config.js文件 */ - public static void setConfigInfo(String key , Object value){ - String configFilePath = ConfigUtils.getProjectName() + "/config.js"; - writeConfigInfo(configFilePath , key , value); + public static void setConfigJsBeforeTest(){ + //退出回收模块后不记住回收界面的过滤条件 + setConfigJs("notRememberFilterConditionWhenExitRecyclingModule",true); + //修改配置项申请表单的类型为分开的申请单 + Utils.setConfigJs("applicationFormType",2); } - /** - * 开启配置项 - */ - public static void setConfigJS(){ - //开启清点确认 - setConfigInfo("enbaleCheckToConfirm", true); - //开启装配时是否自动勾选该篮筐下的第一个包 - setConfigInfo("packingView_autoSelectTousseWhenScanBasket", true); - } /** * 初始化设置,包括项目配置和webdriver的初始化 @@ -200,10 +198,9 @@ browser = Utils.settings.get("seleniumBrowserApplicationName").toString(); //服务器地址 serverAddress = Utils.settings.get("服务器地址").toString(); + //配置config.js + setConfigJsBeforeTest(); - //开启相关配置项 -// setConfigJS(); - //初始化webDriver if(driver==null){ if("ie".equals(browser)){ @@ -243,4 +240,23 @@ logger.debug("没有找到要关闭的告警框按钮!"); } } + + /** + * 清除chrome浏览器缓存 + * @throws Exception + */ + public static void clearChromeCache(){ + try{ + //打开清除缓存窗口 + driver.get("chrome://settings/clearBrowserData"); + //2S 等待时间 + Thread.sleep(2000); + JavascriptExecutor js = (JavascriptExecutor)driver; + js.executeScript("document.querySelector('settings-ui').shadowRoot.querySelector('settings-main').shadowRoot.querySelector('settings-basic-page').shadowRoot.querySelector('settings-section > settings-privacy-page').shadowRoot.querySelector('settings-clear-browsing-data-dialog').shadowRoot.querySelector('#clearBrowsingDataDialog').querySelector('#clearBrowsingDataConfirm').click()"); + logger.debug("清除chrome浏览器缓存成功!"); + driver.get(serverAddress); + } catch (Exception e) { + e.printStackTrace(); + } + } } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyPage.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyPage.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyPage.java (revision 33782) @@ -0,0 +1,117 @@ +package test.forgon.disinfectsystem.selenium3.page.apply; + +import java.util.List; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import test.forgon.disinfectsystem.selenium3.basepage.BasePage; + +/** + * 申领页面对象库层 + * @author yuandongxiao + * + */ +public class ApplyPage extends BasePage { + private By applyComboBtn = By.id("applyCombo");//申请物品按钮 + private By applyTousseBtn = By.id("applyTousse");//申请器械包按钮 + private By handleDepart = By.id("handleDepart-inputEl");//处理科室 + private By tousseName = By.id("package1-inputEl");//物品名称 + private By applyCount = By.id("count1-inputEl");//申请数量 + 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']");//提交后的提示信息 + + + /** + * 获取元素:申请物品按钮 + * @return + */ + public WebElement get_apply_combo_btn(){ + return get_element(this.applyComboBtn); + } + + /** + * 获取元素:申请器械包按钮 + * @return + */ + public WebElement get_apply_tousse_btn(){ + return get_element(this.applyTousseBtn); + } + + /** + * 获取元素:处理科室 + * @return + */ + public WebElement get_handle_depart(){ + return get_element(this.handleDepart); + } + + /** + * 获取元素:物品名称 + * @return + */ + public WebElement get_tousse_name(){ + return get_element(this.tousseName); + } + + /** + * 获取元素:申请数量 + * @return + */ + public WebElement get_apply_count(){ + return get_element(this.applyCount); + } + + /** + * 获取元素:添加按钮 + * @return + */ + public WebElement get_add_tousse_btn(){ + return get_element(this.addTousseBtn); + } + + /** + * 获取元素:处理科室下拉框选项 + * @param handleDepart + * @return + */ + public WebElement get_handle_depart_combo_option(String handleDepartText){ + return get_combo_option(handleDepartText); + } + + /** + * 获取元素:处理物品名称下拉框选项 + * @param handleDepart + * @return + */ + public WebElement get_tousse_name_combo_option(String tousseNameText){ + return get_combo_option(tousseNameText); + } + + /** + * 获取元素:提交按钮 + * @return + */ + public WebElement get_commit_btn(){ + return get_element(this.commitBtn); + } + + /** + * 获取元素:确认提交按钮“是” + * @return + */ + public WebElement get_commit_confirm_btn(){ + return get_element(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/testscript/TestLogin.java =================================================================== diff -u -r33714 -r33782 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestLogin.java (.../TestLogin.java) (revision 33714) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestLogin.java (.../TestLogin.java) (revision 33782) @@ -20,8 +20,8 @@ import org.openqa.selenium.WebDriverException; import test.forgon.disinfectsystem.selenium3.Utils; -import test.forgon.disinfectsystem.selenium3.page.loginpage.LoginProxy; -import test.forgon.disinfectsystem.selenium3.page.personaldesktoppage.PersonalDesktopProxy; +import test.forgon.disinfectsystem.selenium3.page.login.LoginProxy; +import test.forgon.disinfectsystem.selenium3.page.personaldesktop.PersonalDesktopProxy; /** * 测试登录功能 Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/personaldesktop/PersonalDesktopProxy.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/personaldesktop/PersonalDesktopProxy.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/personaldesktop/PersonalDesktopProxy.java (revision 33782) @@ -0,0 +1,70 @@ +package test.forgon.disinfectsystem.selenium3.page.personaldesktop; + +import java.util.Set; + +import test.forgon.disinfectsystem.selenium3.Utils; +import io.qameta.allure.Step; + +/** + * 个人桌面页面业务层 + * @author yuandongxiao + * + */ +public class PersonalDesktopProxy { + //引入个人桌面页面操作层 + private PersonalDesktopHandle personalDesktopHandle = new PersonalDesktopHandle(); + + /** + * 获取欢迎栏上的信息 + * @throws InterruptedException + */ + @Step("获取欢迎栏上的信息") + public String get_welcom_lable_info(){ + personalDesktopHandle.click_warning_win_close_btns(); + return personalDesktopHandle.get_welcom_lable_text(); + } + + /** + * 退出系统 + */ + @Step("退出系统") + public void exit_system(){ + personalDesktopHandle.click_exit_btn(); + } + + /** + * 点击跳转到科室申领标签页 + */ + @Step("点击跳转到科室申领标签页") + public void go_apply(){ + personalDesktopHandle.click_apply_icon(); + personalDesktopHandle.switch_to_apply_frame(); + } + + /** + * 点击跳转到回收清点窗口 + */ + @Step("点击跳转到回收清点窗口") + public void go_recycle(){ + personalDesktopHandle.click_recycle_icon(); + // 获取所有窗口 + Set handles = Utils.driver.getWindowHandles(); + // 删除当前窗口 + handles.remove(Utils.driver.getWindowHandle()); + //跳转到回收清点窗口并最大化 + for (String windowHandle : handles) { + Utils.driver.switchTo().window(windowHandle); + Utils.driver.manage().window().maximize(); + } + } + + /** + * 点击跳转到清洗消毒标签页 + */ + @Step("点击跳转到科室申领标签页") + public void go_wash(){ + personalDesktopHandle.click_wash_icon(); + personalDesktopHandle.switch_to_wash_frame(); + } + +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/wash/WashPage.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/wash/WashPage.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/wash/WashPage.java (revision 33782) @@ -0,0 +1,102 @@ +package test.forgon.disinfectsystem.selenium3.page.wash; + +import java.util.List; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import test.forgon.disinfectsystem.selenium3.basepage.BasePage; + +/** + * 清洗页面对象库层 + * @author yuandongxiao + * + */ +public class WashPage extends BasePage { + private By addBtn = By.xpath("//button[contains(text(), '添加')]");//添加按钮 + private By disinfectMachineName = By.id("disinfectIdentification");//清洗机名称 + 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']");//保存后的提示信息 + + /** + * 获取添加按钮 + * @return + */ + public WebElement get_add_btn(){ + return get_element(this.addBtn); + } + + /** + * 获取清洗机名称输入框 + * @return + */ + public WebElement get_disinfect_machine_name(){ + return get_element(this.disinfectMachineName); + } + + /** + * 获取清洗机名称选项 + * @param washMachineName + * @return + */ + public WebElement get_disinfect_machine_option(String disinfectMachineName){ + By disinfectMachineOption = By.xpath("//div[contains(text(),'"+disinfectMachineName+"')]");//清洗机选项定位 + return get_element(disinfectMachineOption); + } + + /** + * 获取清洗程序输入框 + * @return + */ + public WebElement get_disinfect_program(){ + return get_element(this.disinfectProgram); + } + + /** + * 获取清洗程序选项 + * @param disinfectProgram + * @return + */ + public WebElement get_disinfect_program_option(String disinfectProgram){ + By disinfectProgramOption = By.xpath("//div[contains(text(),'"+disinfectProgram+"')]");//清洗程序选项定位 + return get_element(disinfectProgramOption); + } + + /** + * 获取扫描条码输入框 + * @return + */ + public WebElement get_scan_barcode(){ + return get_element(this.scanBarcode); + } + + /** + * 获取保存按钮 + * @return + */ + public WebElement get_save_btn(){ + return get_element(this.saveBtn); + } + + /** + * 获取篮筐对应的载入按钮 + * @param basketBarcode + * @return + */ + public WebElement get_load_basket_btn(String basketBarcode){ + By loadBasketBtn = By.xpath("//img[contains(@onclick,'"+basketBarcode+"')]");//篮筐对应的载入按钮 + return get_element(loadBasketBtn); + } + + /** + * 获取保存后弹出的提示框(可能会有多条提示信息,只返回最后一条) + * @return + */ + public WebElement get_save_tip(){ + List saveTipList = get_elements(this.saveTip); + return saveTipList.get(saveTipList.size()-1); +// return get_element(this.saveTip); + } +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestRecycle.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestRecycle.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestRecycle.java (revision 33782) @@ -0,0 +1,79 @@ +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.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.recycle.AwaitForRecycleProxy; +import test.forgon.disinfectsystem.selenium3.page.recycle.RecycleProxy; + +/** + * 测试回收清点模块功能 + * @author yuandongxiao + * + */ +@Feature("测试回收清点功能") +public class TestRecycle { + private LoginProxy loginProxy = new LoginProxy(); + private PersonalDesktopProxy personalDesktopProxy = new PersonalDesktopProxy(); + private AwaitForRecycleProxy awaitForRecycleProxy = new AwaitForRecycleProxy(); + private RecycleProxy recycleProxy = new RecycleProxy(); + private static JSONObject nomalRecycleJsonObj;//普通入筐回收用例参数 + + @BeforeClass + public static void setUp_class(){ + Utils.init(); + nomalRecycleJsonObj = Utils.testcaseData.getJSONObject("test_normal_recycle"); + } + + @Story("测试普通入筐回收") + @Test + public void test_normal_recycle() throws InterruptedException { + JSONObject handleUser = nomalRecycleJsonObj.getJSONObject("handle_user");//处理科室用户 + String appType = nomalRecycleJsonObj.getString("application_type");//申请单类型 + JSONArray recyclingBasketBarcodes = nomalRecycleJsonObj.getJSONArray("recycling_basket_barcodes");//回收篮筐条码 + String expect = nomalRecycleJsonObj.getString("expect");//预期结果 + + //用户登录 + loginProxy.go_login_by_btn(handleUser.getString("username"), handleUser.getString("password")); + //回收 + personalDesktopProxy.go_recycle(); + awaitForRecycleProxy.choose_most_recent_application_by_type(appType); + //等待排序完成 + Thread.sleep(2000); + recycleProxy.recycle_by_normal_into_basket(handleUser.getString("barcode"), handleUser.getString("barcode"), recyclingBasketBarcodes); + //等待页面跳转 + Thread.sleep(2000); + String result = Utils.driver.getCurrentUrl(); + 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"); + } + + @AfterClass + public static void tearDown_class(){ + Utils.quitDriver(); + } +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/recycle/RecyclePage.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/recycle/RecyclePage.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/recycle/RecyclePage.java (revision 33782) @@ -0,0 +1,61 @@ +package test.forgon.disinfectsystem.selenium3.page.recycle; + +import java.util.List; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import test.forgon.disinfectsystem.selenium3.basepage.BasePage; + +/** + * 回收页面对象库层 + * @author yuandongxiao + * + */ +public class RecyclePage extends BasePage { + private By intoBasketBtns = By.className("btn-a");//入筐按钮 + private By allIntoBasketBtn = By.className("btn-h");//一键入筐按钮 + private By tousseItemTable = By.id("tousseItemTable");//回收项表格 + private By saveBtn = By.id("saveBtnTd");//保存按钮 + private By basketItems = By.xpath("//*[@id='basketsUl']//dl");//篮筐物品明细 + + /** + * 获取入筐按钮 + * @return + */ + public List get_into_basket_btns(){ + return get_elements(this.intoBasketBtns); + } + + /** + * 获取一键入筐按钮 + * @return + */ + public WebElement get_all_into_basket_btn(){ + return get_element(this.allIntoBasketBtn); + } + + /** + * 获取回收项表格 + * @return + */ + public WebElement get_tousse_tousse_item_table(){ + return get_element(this.tousseItemTable); + } + + /** + * 获取保存按钮 + * @return + */ + public WebElement get_save_btn(){ + return get_element(this.saveBtn); + } + + /** + * 获取篮筐物品明细 + * @return + */ + public List get_basket_items(){ + return get_elements(basketItems); + } +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestMainProcess.java =================================================================== diff -u -r33709 -r33782 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestMainProcess.java (.../TestMainProcess.java) (revision 33709) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestMainProcess.java (.../TestMainProcess.java) (revision 33782) @@ -1,9 +1,103 @@ 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 java.util.Set; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.junit.After; +import org.junit.AfterClass; +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.apply.ApplyProxy; +import test.forgon.disinfectsystem.selenium3.page.login.LoginProxy; +import test.forgon.disinfectsystem.selenium3.page.personaldesktop.PersonalDesktopProxy; +import test.forgon.disinfectsystem.selenium3.page.recycle.AwaitForRecycleProxy; +import test.forgon.disinfectsystem.selenium3.page.recycle.RecycleProxy; +import test.forgon.disinfectsystem.selenium3.page.wash.WashProxy; + /** * 测试主流程 * @author yuandongxiao * */ +@Feature("测试主流程功能") public class TestMainProcess { - + private LoginProxy loginProxy = new LoginProxy(); + private PersonalDesktopProxy personalDesktopProxy = new PersonalDesktopProxy(); + private ApplyProxy applyProxy = new ApplyProxy(); + private AwaitForRecycleProxy awaitForRecycleProxy = new AwaitForRecycleProxy(); + private RecycleProxy recycleProxy = new RecycleProxy(); + private WashProxy washProxy = new WashProxy(); + private static JSONObject nomalTousseProcessJsonObj;//普通器械包闭环流程用例参数 + + @BeforeClass + public static void setUp_class(){ + Utils.init(); + nomalTousseProcessJsonObj = Utils.testcaseData.getJSONObject("test_normal_tousse_process"); + } + + @Story("普通器械包闭环流程") + @Test + public void test_main_process_of_normal_tousse() { + JSONObject applyUser = nomalTousseProcessJsonObj.getJSONObject("apply_user");//申领科室用户 + JSONObject handleUser = nomalTousseProcessJsonObj.getJSONObject("handle_user");//处理科室用户 + JSONArray applyTousseList = nomalTousseProcessJsonObj.getJSONArray("apply_tousse_list");//申领物品集合 + String handleDepart = nomalTousseProcessJsonObj.getString("handle_depart");//处理科室 + String appType = nomalTousseProcessJsonObj.getString("application_type");//申请单类型 + JSONArray recyclingBasketBarcodes = nomalTousseProcessJsonObj.getJSONArray("recycling_basket_barcodes");//回收篮筐条码 + String disinfectMachineBarcode = nomalTousseProcessJsonObj.getJSONObject("wash_machine").getString("machineBarcode");//清洗机条码 + String disinfectProgramBarcode = nomalTousseProcessJsonObj.getJSONObject("wash_program").getString("programBarcode");//清洗程序条码 + + //临床科室用户登录 + loginProxy.go_login_by_btn(applyUser.getString("username"), applyUser.getString("password")); + + //申领 + personalDesktopProxy.go_apply(); + applyProxy.apply_tousse(handleDepart, applyTousseList); + personalDesktopProxy.exit_system(); + + //处理科室用户登录 + loginProxy.go_login_by_btn(handleUser.getString("username"), handleUser.getString("password")); + + //回收 + personalDesktopProxy.go_recycle(); + awaitForRecycleProxy.choose_most_recent_application_by_type(appType); + recycleProxy.recycle_by_normal_into_basket(handleUser.getString("barcode"), handleUser.getString("barcode"), recyclingBasketBarcodes); + + //关闭回收页面 + Set windowHandles = Utils.driver.getWindowHandles(); + windowHandles.remove(Utils.driver.getWindowHandle()); + //跳转会个人桌面窗口 + for (String windowHandle : windowHandles) { + Utils.driver.switchTo().window(windowHandle); + } + + //清洗 + personalDesktopProxy.go_wash(); + washProxy.disinfect_by_scan_barcodes(disinfectMachineBarcode, disinfectProgramBarcode, handleUser.getString("barcode"), recyclingBasketBarcodes); + } + + @After + public void tearDown() throws FileNotFoundException, WebDriverException, InterruptedException{ + //用例跑完后,添加截图到测试报告 + Allure.addAttachment("测试用例完成截图", "image/png",new FileInputStream(((TakesScreenshot) Utils.driver).getScreenshotAs(OutputType.FILE)), ".png"); + } + + @AfterClass + public static void tearDown_class(){ + Utils.quitDriver(); + } + } Index: ssts-web/src/test/resources/test/forgon/disinfectsystem/selenium/config/all/testcase_data.json =================================================================== diff -u -r33714 -r33782 --- ssts-web/src/test/resources/test/forgon/disinfectsystem/selenium/config/all/testcase_data.json (.../testcase_data.json) (revision 33714) +++ ssts-web/src/test/resources/test/forgon/disinfectsystem/selenium/config/all/testcase_data.json (.../testcase_data.json) (revision 33782) @@ -14,9 +14,97 @@ { "barcode":"0100001008","expect":"admin" }, { "barcode":"123456789","expect":"用户名或者密码错误" } ], - "test_apply_combo": [ - { "tousseName":"Test穿刺包","tousseCount":"3" }, - { "tousseName":"Test缝合包","tousseCount":"4" }, - { "tousseName":"Test清创包","tousseCount":"5" } - ] + "test_normal_tousse_process":{ + "application_type":"器械包申请单", + "apply_user":{ + "username":"neikeuser1", + "password":"1" + }, + "handle_user":{ + "username":"cssduser1", + "password":"1", + "barcode":"0100001001" + }, + "handle_depart":"测试供应室", + "apply_tousse_list":[ + { "tousseName":"Test穿刺包","tousseCount":"3" }, + { "tousseName":"Test开胸包","tousseCount":"3" } + ], + "recycling_basket_barcodes":[ + {"basketBarcode":"019000001"} + ], + "wash_machine":{ + "machineName":"清洗机1", + "machineBarcode":"010173001" + }, + "wash_program":{ + "programName":"P1", + "programBarcode":"010172001" + } + }, + "test_apply_combo_tousse": { + "apply_user":{ + "username":"neikeuser1", + "password":"1" + }, + "handle_depart":"测试供应室", + "apply_tousse_list":[ + { "tousseName":"Test穿刺包","tousseCount":"3" }, + { "tousseName":"Test开胸包","tousseCount":"3" }, + { "tousseName":"Test敷料包A","tousseCount":"3" }, + { "tousseName":"Test敷料包B","tousseCount":"3" }, + { "tousseName":"Test雾化器","tousseCount":"3" }, + { "tousseName":"test止血带","tousseCount":"3" }, + { "tousseName":"一次性腰穿包","tousseCount":"10" }, + { "tousseName":"动脉采血器","tousseCount":"10" } + ], + "expect":"提交成功" + }, + "test_apply_tousse": { + "apply_user":{ + "username":"neikeuser1", + "password":"1" + }, + "handle_depart":"测试供应室", + "apply_tousse_list":[ + { "tousseName":"Test穿刺包","tousseCount":"3" }, + { "tousseName":"Test开胸包","tousseCount":"3" }, + { "tousseName":"Test敷料包A","tousseCount":"3" }, + { "tousseName":"Test敷料包B","tousseCount":"3" }, + { "tousseName":"Test雾化器","tousseCount":"3" }, + { "tousseName":"test止血带","tousseCount":"3" } + ], + "expect":"提交成功" + }, + "test_normal_recycle":{ + "application_type":"通用申请单", + "handle_user":{ + "username":"cssduser1", + "password":"1", + "barcode":"0100001001" + }, + "recycling_basket_barcodes":[ + {"basketBarcode":"019000002"} + ], + "expect":"awaitForRecycleList" + }, + "test_normal_wash":{ + "operator":{ + "username":"cssduser1", + "password":"1", + "barcode":"0100001001" + }, + "wash_machine":{ + "machineName":"清洗机1", + "machineBarcode":"010173001" + }, + "wash_program":{ + "programName":"P1", + "programBarcode":"010172001" + }, + "basket_barcodes":[ + {"basketBarcode":"010011006"} + ], + "expect":"保存成功" + } } \ No newline at end of file Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyHandle.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyHandle.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyHandle.java (revision 33782) @@ -0,0 +1,95 @@ +package test.forgon.disinfectsystem.selenium3.page.apply; + +import test.forgon.disinfectsystem.selenium3.basepage.BaseHandle; + +/** + * 申领页面操作层 + * @author yuandongxiao + * + */ +public class ApplyHandle extends BaseHandle { + //引入申领页面对象库层 + private ApplyPage applyPage = new ApplyPage(); + + /** + * 点击申请物品按钮 + */ + public void click_apply_combo_btn(){ + applyPage.get_apply_combo_btn().click(); + } + + /** + * 点击申请器械包按钮 + */ + public void click_apply_tousse_btn(){ + applyPage.get_apply_tousse_btn().click(); + } + + /** + * 输入处理科室 + */ + public void input_handle_depart(String handleDepart){ + input_text(applyPage.get_handle_depart(), handleDepart); + } + + /** + * 点击处理科室下拉框选项 + * @param handleDepartText + */ + public void click_handle_depart_combo_option(String handleDepartText){ + applyPage.get_handle_depart_combo_option(handleDepartText).click(); + } + + /** + * 输入物品名称 + * @param tousseName + */ + public void input_tousse_name(String tousseName){ + input_text(applyPage.get_tousse_name(),tousseName); + } + + /** + * 点击物品名称下拉框选项 + * @param tousseNameText + */ + public void click_tousse_name_combo_option(String tousseNameText){ + applyPage.get_tousse_name_combo_option(tousseNameText).click();; + } + + /** + * 输入申请数量 + * @param count + */ + public void input_tousse_count(String count){ + input_text(applyPage.get_apply_count(), count); + } + + /** + * 点击添加按钮 + */ + public void click_add_tousse_btn(){ + applyPage.get_add_tousse_btn().click(); + } + + /** + * 点击提交按钮 + */ + public void click_commit_btn(){ + applyPage.get_commit_btn().click(); + } + + /** + * 点击确认提交按钮 + */ + public void click_commit_confirm_btn(){ + applyPage.get_commit_confirm_btn().click(); + } + + /** + * 获取提交后的弹出框信息 + * @return + */ + public String get_commit_tip_msg(){ + return applyPage.get_commit_tip().getText(); + } +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestWash.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestWash.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestWash.java (revision 33782) @@ -0,0 +1,98 @@ +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.wash.WashProxy; + +/** + * 测试清洗消毒功能 + * @author yuandongxiao + * + */ +@Feature("测试清洗消毒功能") +public class TestWash { + public static Logger logger = Logger.getLogger(TestWash.class);//日志器 + private LoginProxy loginProxy = new LoginProxy(); + private WashProxy washProxy = new WashProxy(); + private PersonalDesktopProxy personalDesktopProxy = new PersonalDesktopProxy(); + private static JSONObject normalWashJsonObj;//通用申请单测试用例参数 + + + @BeforeClass + public static void setUp_class(){ + Utils.init(); + normalWashJsonObj = Utils.testcaseData.getJSONObject("test_normal_wash"); + } + + @Story("通过点击选项来添加一条清洗记录") + @Test + public void test_disinfect_by_select_options() { + JSONObject operator = normalWashJsonObj.getJSONObject("operator");//操作人 + String disinfectMachineName = normalWashJsonObj.getJSONObject("wash_machine").getString("machineName");//清洗机名称 + String disinfectProgram = normalWashJsonObj.getJSONObject("wash_program").getString("programName");//清洗程序名称 + JSONArray basketBarcodes = normalWashJsonObj.getJSONArray("basket_barcodes");//篮筐条码 + String expect = normalWashJsonObj.getString("expect");//预期结果 + + //登录 + loginProxy.go_login_by_btn(operator.getString("username"), operator.getString("password")); + personalDesktopProxy.go_wash(); + //清洗 + String result= washProxy.disinfect_by_select_options(disinfectMachineName, disinfectProgram, operator.getString("barcode"), basketBarcodes); + System.out.println(result); + Assert.assertTrue(result.contains(expect)); + } + + @Story("通过扫码来添加一条清洗记录") + @Test + public void test_disinfect_by_scan_barcodes(){ + JSONObject operator = normalWashJsonObj.getJSONObject("operator");//操作人 + String disinfectMachineBarcode = normalWashJsonObj.getJSONObject("wash_machine").getString("machineBarcode");//清洗机条码 + String disinfectProgramBarcode = normalWashJsonObj.getJSONObject("wash_program").getString("programBarcode");//清洗程序条码 + JSONArray basketBarcodes = normalWashJsonObj.getJSONArray("basket_barcodes");//篮筐条码 + String expect = normalWashJsonObj.getString("expect");//预期结果 + + //登录 + loginProxy.go_login_by_btn(operator.getString("username"), operator.getString("password")); + + //清洗 + personalDesktopProxy.go_wash(); + String result= washProxy.disinfect_by_scan_barcodes(disinfectMachineBarcode, disinfectProgramBarcode, operator.getString("barcode"), basketBarcodes); + System.out.println(result); + 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/recycle/RecycleProxy.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/recycle/RecycleProxy.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/recycle/RecycleProxy.java (revision 33782) @@ -0,0 +1,41 @@ +package test.forgon.disinfectsystem.selenium3.page.recycle; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; +import io.qameta.allure.Step; + + +/** + * 回收页面业务层 + * @author yuandongxiao + * + */ +public class RecycleProxy { + //引入回收页面操作层 + private RecycleHandle recycleHandle = new RecycleHandle(); + + /** + * 普通入筐回收 + * @param recyclingUser 回收人条码 + * @param countingUser 清点人条码 + * @param basket 篮筐条码 + */ + @Step("普通入筐回收") + public void recycle_by_normal_into_basket(String recyclingUser,String countingUser,JSONArray basketBarcodes){ + recycleHandle.scan_barcode(recyclingUser); + recycleHandle.scan_barcode(countingUser); + //循环点击载入按钮 + for(int i=0;i get_warning_win_close_btns(){ + return get_elements(this.warningWinCloseBtns); + } + + /** + * 获取退出系统按钮 + * @return + */ + public WebElement get_exit_btn(){ + return get_element(this.exitBtn); + } + + /** + * 获取科室申领图标 + * @return + */ + public WebElement get_apply_icon(){ + return get_element(this.applyIcon); + } + + /** + * 获取科室申领标签页 + * @return + */ + public WebElement get_apply_frame(){ + return get_element(this.applyFrame); + } + + /** + * 获取回收清点图标 + * @return + */ + public WebElement get_recycle_icon(){ + return get_element(this.recycleIcon); + } + + /** + * 获取清洗消毒图标 + * @return + */ + public WebElement get_wash_icon(){ + return get_element(this.washIcon); + } + + /** + * 获取清洗消毒标签页 + * @return + */ + public WebElement get_wash_frame(){ + return get_element(this.washFrame); + } +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/basepage/BasePage.java =================================================================== diff -u -r33709 -r33782 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/basepage/BasePage.java (.../BasePage.java) (revision 33709) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/basepage/BasePage.java (.../BasePage.java) (revision 33782) @@ -57,7 +57,7 @@ By comboOption = By.xpath("//li[@role='option' and contains(text(), '" + comboInputText+ "')]"); try { //因为下拉框内容需等待数据库返回,此处应使用强制等待 - Thread.sleep(1000); + Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/recycle/AwaitForRecyclePage.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/recycle/AwaitForRecyclePage.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/recycle/AwaitForRecyclePage.java (revision 33782) @@ -0,0 +1,42 @@ +package test.forgon.disinfectsystem.selenium3.page.recycle; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import test.forgon.disinfectsystem.selenium3.basepage.BasePage; + +/** + * 待回收页面对象库层 + * @author yuandongxiao + * + */ +public class AwaitForRecyclePage extends BasePage{ + private By appTypeSelect = By.id("appTypeSelect");//申请单类型下拉框 + private By lastModifiedTime = By.linkText("最后修改时间");//最后修改时间 + private By firstApplicationInAwaitForRecycleTable = By.xpath("//table[@id='awaitForRecycleTable']//tr[1]/td[1]");//待回收列表上的第一张申请单 + + /** + * 获取申请单类型下拉框 + * @return + */ + public WebElement get_app_type_select(){ + return get_element(this.appTypeSelect); + } + + /** + * 获取最后修改时间 + * @return + */ + public WebElement get_last_modified_time(){ + return get_element(this.lastModifiedTime); + } + + /** + * 获取待回收列表的第一张申请单记录 + * @return + */ + public WebElement get_first_application_in_await_for_recycle_table(){ + return get_element(this.firstApplicationInAwaitForRecycleTable); + } + +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestApply.java =================================================================== diff -u -r33709 -r33782 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestApply.java (.../TestApply.java) (revision 33709) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestApply.java (.../TestApply.java) (revision 33782) @@ -3,6 +3,7 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; +import org.apache.log4j.Logger; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; @@ -16,44 +17,91 @@ import io.qameta.allure.Feature; import io.qameta.allure.Story; import net.sf.json.JSONArray; +import net.sf.json.JSONObject; import test.forgon.disinfectsystem.selenium3.Utils; -import test.forgon.disinfectsystem.selenium3.page.applypage.ApplyProxy; -import test.forgon.disinfectsystem.selenium3.page.loginpage.LoginProxy; -import test.forgon.disinfectsystem.selenium3.page.personaldesktoppage.PersonalDesktopProxy; +import test.forgon.disinfectsystem.selenium3.page.apply.ApplyProxy; +import test.forgon.disinfectsystem.selenium3.page.login.LoginProxy; +import test.forgon.disinfectsystem.selenium3.page.personaldesktop.PersonalDesktopProxy; /** - * 测试科室申领功能 + * 测试科室申领模块功能 * @author yuandongxiao * */ @Feature("测试科室申领功能") public class TestApply { + public static Logger logger = Logger.getLogger(TestApply.class);//日志器 private ApplyProxy applyProxy = new ApplyProxy(); private LoginProxy loginProxy = new LoginProxy(); private PersonalDesktopProxy personalDesktopProxy = new PersonalDesktopProxy(); - private String handleDepart; - private static JSONArray tousseList; + private static String applyTypeFlag;//申请单类型标志 + private static JSONObject applyComboTousseJsonObj;//通用申请单测试用例参数 + private static JSONObject applyTousseJsonObj;//器械包申请单测试用例参数 + /** + * 修改申请单类型 + * @param type + */ + public void changeApplyType(String type){ + //修改申请表单的类型:1为通用申请单 ,2为分开的申请单 + if("1".equals(type)){ + Utils.setConfigJs("applicationFormType",1); + }else if("2".equals(type)){ + Utils.setConfigJs("applicationFormType",2); + } + //清浏览器缓存 + Utils.clearChromeCache(); + + } + @BeforeClass public static void setUp_class(){ Utils.init(); - tousseList = Utils.testcaseData.getJSONArray("test_apply_combo"); - System.out.println(tousseList); + applyComboTousseJsonObj = Utils.testcaseData.getJSONObject("test_apply_combo_tousse"); + applyTousseJsonObj = Utils.testcaseData.getJSONObject("test_apply_tousse"); } @Story("申领通用申请单") @Test - public void test_apply_combo(){ - loginProxy.go_login_by_btn("neikeuser1", "1"); + public void test_apply_combo_tousse() throws FileNotFoundException, WebDriverException{ + //修改申请单类型并清缓存 + applyTypeFlag = "1"; + changeApplyType(applyTypeFlag); + + JSONObject applyUser = applyComboTousseJsonObj.getJSONObject("apply_user");//申领科室用户 + JSONArray applyTousseList = applyComboTousseJsonObj.getJSONArray("apply_tousse_list");//申领物品集合 + String handleDepart = applyComboTousseJsonObj.getString("handle_depart");//处理科室 + String expect = applyComboTousseJsonObj.getString("expect");//预期结果 + + loginProxy.go_login_by_btn(applyUser.getString("username"), applyUser.getString("password")); personalDesktopProxy.go_apply(); - String result= applyProxy.apply_combo_tousse("测试供应室", tousseList); - Assert.assertTrue(result.contains("提交成功")); + String result= applyProxy.apply_combo_tousse(handleDepart, applyTousseList); + Assert.assertTrue(result.contains(expect)); } + @Story("申领器械包申请单") + @Test + public void test_apply_tousse() throws FileNotFoundException, WebDriverException{ + JSONObject applyUser = applyTousseJsonObj.getJSONObject("apply_user");//申领科室用户 + JSONArray applyTousseList = applyTousseJsonObj.getJSONArray("apply_tousse_list");//申领物品集合 + String handleDepart = applyTousseJsonObj.getString("handle_depart");//处理科室 + String expect = applyTousseJsonObj.getString("expect");//预期结果 + + loginProxy.go_login_by_btn(applyUser.getString("username"), applyUser.getString("password")); + personalDesktopProxy.go_apply(); + String result= applyProxy.apply_tousse(handleDepart, applyTousseList); + 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"); + //将申请单类型修改回默认的类型 + if("1".equals(applyTypeFlag)){ + applyTypeFlag = "2"; + changeApplyType(applyTypeFlag); + } } @AfterClass Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyProxy.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyProxy.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyProxy.java (revision 33782) @@ -0,0 +1,71 @@ +package test.forgon.disinfectsystem.selenium3.page.apply; + +import io.qameta.allure.Step; +import test.forgon.disinfectsystem.selenium3.Utils; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +/** + * 申领页面业务层 + * @author yuandongxiao + * + */ +public class ApplyProxy { + //引入申请页面操作层 + private ApplyHandle applyHandle = new ApplyHandle(); + + /** + * 申领通用申请单 + * @param handleDepart + * @param tousseList + * @return + */ + @Step("申领物品:通用申请单") + public String apply_combo_tousse(String handleDepart,JSONArray tousseArray){ + applyHandle.click_apply_combo_btn(); + Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); + applyHandle.input_handle_depart(handleDepart); + applyHandle.click_handle_depart_combo_option(handleDepart); + //循环添加物品 + for(int i=0;i intoBasketBtnsList = recyclePage.get_into_basket_btns(); + for(int i=0;i0){ + return true; + }else{ + return false; + } + } + + +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/personaldesktop/PersonalDesktopHandle.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/personaldesktop/PersonalDesktopHandle.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/personaldesktop/PersonalDesktopHandle.java (revision 33782) @@ -0,0 +1,88 @@ +package test.forgon.disinfectsystem.selenium3.page.personaldesktop; + +import java.util.List; + +import org.apache.log4j.Logger; +import org.openqa.selenium.TimeoutException; +import org.openqa.selenium.WebElement; + +import test.forgon.disinfectsystem.selenium3.Utils; +import test.forgon.disinfectsystem.selenium3.basepage.BaseHandle; + +/** + * 个人桌面操作层 + * @author yuandongxiao + * + */ +public class PersonalDesktopHandle extends BaseHandle { + public static Logger logger = Logger.getLogger(PersonalDesktopHandle.class);//日志器 + //引入个人桌面对象库层 + private PersonalDesktopPage personalDesktopPage = new PersonalDesktopPage(); + + /** + * 关闭告警框 + * @throws InterruptedException + */ + public void click_warning_win_close_btns(){ + List element_list = null; + try { + element_list = personalDesktopPage.get_warning_win_close_btns(); + } catch (TimeoutException e) { + logger.info("没有需要关闭的告警框"); + }finally{ + Utils.closeWarningWins(element_list); + } + } + + /** + * 获取欢迎标签信息 + * @return + */ + public String get_welcom_lable_text(){ + return personalDesktopPage.get_welcome_lable().getText(); + } + + /** + * 退出系统 + */ + public void click_exit_btn(){ + personalDesktopPage.get_exit_btn().click(); + } + + /** + * 点击科室申领图标 + */ + public void click_apply_icon(){ + personalDesktopPage.get_apply_icon().click(); + } + + /** + * 跳转到科室申领标签页 + */ + public void switch_to_apply_frame(){ + Utils.driver.switchTo().frame(personalDesktopPage.get_apply_frame()); + } + + + /** + * 点击回收清点图标 + */ + public void click_recycle_icon(){ + personalDesktopPage.get_recycle_icon().click(); + } + + /** + * 点击清洗消毒图标 + */ + public void click_wash_icon(){ + personalDesktopPage.get_wash_icon().click(); + } + + /** + * 跳转到清洗消毒标签页 + */ + public void switch_to_wash_frame(){ + Utils.driver.switchTo().frame(personalDesktopPage.get_wash_frame()); + } + +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/recycle/AwaitForRecycleProxy.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/recycle/AwaitForRecycleProxy.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/recycle/AwaitForRecycleProxy.java (revision 33782) @@ -0,0 +1,22 @@ +package test.forgon.disinfectsystem.selenium3.page.recycle; + +/** + * 待回收页面业务层 + * @author yuandongxiao + * + */ +public class AwaitForRecycleProxy { + //引入待回收页面操作层 + private AwaitForRecycleHandle awaitForRecycleHandle = new AwaitForRecycleHandle(); + + /** + * 根据申请单类型选择最近的一张申请单 + * @param appType + */ + public void choose_most_recent_application_by_type(String appType){ + awaitForRecycleHandle.select_app_type_by_visible_text(appType); + awaitForRecycleHandle.click_last_modified_time(); + //按查询条件过滤之后等待数据改变 + awaitForRecycleHandle.click_first_application_in_await_for_recycle_table(); + } +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/wash/WashProxy.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/wash/WashProxy.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/wash/WashProxy.java (revision 33782) @@ -0,0 +1,87 @@ +package test.forgon.disinfectsystem.selenium3.page.wash; + +import test.forgon.disinfectsystem.selenium3.Utils; +import io.qameta.allure.Step; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +/** + * 清洗页面业务层 + * @author yuandongxiao + * + */ +public class WashProxy { + //引入清洗页面操作层 + private WashHandle washHandle = new WashHandle(); + + /** + * 通过点击选项来添加一条清洗记录 + * @param disinfectMachineName + * @param disinfectProgram + * @param personInChargeBarcode + * @param basketBarcode + * @return + */ + @Step("通过点击选项来添加一条清洗记录") + 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()); + washHandle.click_disinfect_machine_name(); + washHandle.select_disinfect_machine_option(disinfectMachineName); + washHandle.click_disinfect_program(); + washHandle.select_disinfect_program(disinfectProgram); + washHandle.input_barcode(operator);//操作人 + washHandle.input_barcode(operator);//责任人 + //循环点击载入按钮 + for(int i=0;i