Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyProxy.java =================================================================== diff -u -r34001 -r34011 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyProxy.java (.../ApplyProxy.java) (revision 34001) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/apply/ApplyProxy.java (.../ApplyProxy.java) (revision 34011) @@ -85,6 +85,7 @@ * @return * @throws InterruptedException */ + @Step("申领外来器械(带病人信息)") public String apply_foreign_tousse(String hospitalNumber,String clinicNumber,String patient,String patientArea,String roomNumber,String patientAge, String bedNumber,String patientSex,String ascriptionDepartment,String surgery,String doctor,String operationRoom,String remark,JSONArray foreignTousse) throws InterruptedException{ Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/pack/PackProxy.java =================================================================== diff -u -r33862 -r34011 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/pack/PackProxy.java (.../PackProxy.java) (revision 33862) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/pack/PackProxy.java (.../PackProxy.java) (revision 34011) @@ -1,5 +1,7 @@ package test.forgon.disinfectsystem.selenium3.page.pack; +import test.forgon.disinfectsystem.selenium.tools.Utils; +import io.qameta.allure.Step; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -13,11 +15,14 @@ //引入装配管理页面操作层 private PackHandle packHandle = new PackHandle(); + /** * 普通装配 * @param basketBarcodes - * @return + * @param operatorBarcode + * @param reviewerBarcode */ + @Step("普通装配") public void normal_packing(JSONArray basketBarcodes,String operatorBarcode,String reviewerBarcode){ try { for(int i=0;i>”按钮,拆出第一个小包 + packHandle.click_select_all_checkbox(); + packHandle.click_move_material_btn1(); + packHandle.click_split_btn(); + //点击“>>>>”按钮,将剩余材料拆出第二个小包 + packHandle.click_move_material_btn2(); + packHandle.click_split_btn(); + //修改两个拆分小包的包装类型和灭菌程序 + for(int j=0;j<2;j++){ + packHandle.double_click_package_type_of_split_tousse(j); + packHandle.click_package_type_option(packageType); + packHandle.double_click_sterilization_program_of_split_tousse(j); + packHandle.click_steriling_type_option(sterilizationProgram); + } + packHandle.click_save_and_print_btn_in_split_win(); + } } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/pack/PackPage.java =================================================================== diff -u -r33862 -r34011 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/pack/PackPage.java (.../PackPage.java) (revision 33862) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/pack/PackPage.java (.../PackPage.java) (revision 34011) @@ -22,6 +22,14 @@ private By sterilingType = By.id("sterilingType-inputEl");//灭菌程序 private By packageType = By.id("packageType-inputEl");//包装类型 private By saveAndPrintBtn = By.id("save_print-btnIconEl");//装配并打印标签按钮 + private By splitForeignTousseBtn = By.xpath("//input[@value='拆包']");//外来器械拆包按钮 + private By packerBarcode2 = By.id("packerBarcode2-inputEl");//外来器械拆包窗口的配包人条码 + private By reviewerBarcode2 = By.id("reviewerBarcode2-inputEl");//外来器械拆包窗口的审核人条码 + private By selectAllCheckbox = By.id("//*[@id='waitSplitMaterialGrid']/div[2]//span[1]");//待拆分材料的全选框 + private By moveMaterialBtn1 = By.xpath("//span[text()='>>']");//移动材料按钮1 + private By moveMaterialBtn2 = By.xpath("//span[text()='>>>>']");//移动材料按钮2 + private By splitBtn = By.xpath("//span[text()='拆分']");//拆分按钮 + private By saveAndPrintBtnInSplitWin = By.xpath("//*[@id='foreignTousseWin-body']//span[text()='装配并打印标签']");//外来器械拆包窗口的装配并打印标签按钮 /** @@ -107,4 +115,102 @@ public WebElement get_save_and_print_btn(){ return get_element_until_clickable(saveAndPrintBtn); } + + + /** + * 获取外来器械拆包按钮 + * @return + */ + public WebElement get_split_foreign_tousse_btn(){ + return get_element_until_clickable(splitForeignTousseBtn); + } + + /** + * 获取拆分数量所在列的格子 + * @param i 所在行数 + * @return + */ + public WebElement get_split_count_td(int i){ + By splitCountTd = By.xpath("//*[@id='waitSplitMaterialGrid-body'] //tbody/tr["+i+"]/td[3]/div"); + return get_element_until_visibility(splitCountTd); + } + + /** + * 获取拆分小包的包装类型所在列的格子 + * @param i 所在行数 + * @return + */ + public WebElement get_package_type_of_split_tousse(int i){ + By packageTypeOfSplitTousse = By.xpath("//div[@id='splitedTousseGrid-body']//tr["+i+"]/td[3]"); + return get_element_until_visibility(packageTypeOfSplitTousse); + } + + /** + * 获取拆分小包的灭菌程序所在列的格子 + * @param i 所在行数 + * @return + */ + public WebElement get_sterilization_program_of_split_tousse(int i){ + By sterilizationProgramOfSplitTousse = By.xpath("//div[@id='splitedTousseGrid-body']//tr["+i+"]/td[4]"); + return get_element_until_visibility(sterilizationProgramOfSplitTousse); + } + + + /** + * 获取外来器械拆包窗口的配包人条码 + * @return + */ + public WebElement get_packer_barcode2(){ + return get_element_until_clickable(packerBarcode2); + } + + /** + * 获取外来器械拆包窗口的审核人条码 + * @return + */ + public WebElement get_reviewer_barcode2(){ + return get_element_until_clickable(reviewerBarcode2); + } + + /** + * 获取待拆分材料的全选框 + * @return + */ + public WebElement get_select_all_checkbox(){ + return get_element_until_clickable(selectAllCheckbox); + } + + /** + * 获取移动材料按钮1 + * @return + */ + public WebElement get_move_material_btn1(){ + return get_element_until_clickable(moveMaterialBtn1); + } + + /** + * 获取移动材料按钮2 + * @return + */ + public WebElement get_move_material_btn2(){ + return get_element_until_clickable(moveMaterialBtn2); + } + + /** + * 获取拆分按钮 + * @return + */ + public WebElement get_split_btn(){ + return get_element_until_clickable(splitBtn); + } + + /** + * 获取外来器械拆包窗口的装配并打印标签按钮 + * @return + */ + public WebElement get_save_and_print_btn_in_split_win(){ + return get_element_until_clickable(saveAndPrintBtnInSplitWin); + } + + } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sterile/SterileProxy.java =================================================================== diff -u -r33862 -r34011 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sterile/SterileProxy.java (.../SterileProxy.java) (revision 33862) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/sterile/SterileProxy.java (.../SterileProxy.java) (revision 34011) @@ -1,5 +1,6 @@ package test.forgon.disinfectsystem.selenium3.page.sterile; +import io.qameta.allure.Step; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import test.forgon.disinfectsystem.selenium3.Utils; @@ -22,6 +23,7 @@ * @param barcodes * @return */ + @Step("通过点击选项来添加一条灭菌记录并完成灭菌") public String sterilize_by_select_options(String sterilizerName,String sterilizationProgram,String sterilizationPurpose,JSONArray barcodes){ try { sterileHandle.click_add_btn(); @@ -61,6 +63,7 @@ * @param barcodes * @return */ + @Step("通过扫描来添加一条灭菌记录并完成灭菌") public String sterilize_by_scan_barcodes(String sterilizerBarcode,String sterilizationProgram,String sterilizationPurpose, JSONArray barcodes){ try { sterileHandle.click_add_btn(); Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/Utils.java =================================================================== diff -u -r34005 -r34011 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/Utils.java (.../Utils.java) (revision 34005) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/Utils.java (.../Utils.java) (revision 34011) @@ -25,6 +25,7 @@ import java.util.List; import java.util.Scanner; import java.util.Set; +import java.util.function.Function; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -330,6 +331,32 @@ } /** + * 等待一段时间,直到页面的URL地址包含了期望值,如果没有包含期望值,则抛出运行时异常。 + * @param urlContaints 期望的新URL中被包含的值 + * @param seconds 等待的超时时间 + */ + public static boolean waitUntilUrlContains(String urlContains,int timeOutInSeconds) { + boolean isURLOk = false; + try { + WebDriverWait wait = new WebDriverWait(driver, timeOutInSeconds); + isURLOk = wait.until(new Function(){ + public Boolean apply(WebDriver driver) { + return driver.getCurrentUrl().contains(urlContains); + } + }); + } catch (Exception e) { + e.printStackTrace(); + } + String currentURL = driver.getCurrentUrl(); + if (!isURLOk) { + logger.info("URL地址期望值 应包含= " + urlContains+ ",当前地址 = " + currentURL); + } + logger.info("当前地址 = " + currentURL); + return isURLOk; + + } + + /** * 屏幕录制 */ public static void initscreenRecorder(){ Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestMainProcess.java =================================================================== diff -u -r34001 -r34011 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestMainProcess.java (.../TestMainProcess.java) (revision 34001) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestMainProcess.java (.../TestMainProcess.java) (revision 34011) @@ -204,9 +204,7 @@ recycleProxy.recycle_by_normal_into_basket(handleUser.getString("barcode"), handleUser.getString("barcode"), secondaryRecyclingBasketBarcodes); //等待页面跳转 - Thread.sleep(2000); - String result = Utils.driver.getCurrentUrl(); - Assert.assertTrue(result.contains(expect)); + Assert.assertTrue(Utils.waitUntilUrlContains(expect, 10)); } @@ -331,9 +329,7 @@ } //等待页面跳转 - Thread.sleep(2000); - String result = Utils.driver.getCurrentUrl(); - Assert.assertTrue(result.contains(expect)); + Assert.assertTrue(Utils.waitUntilUrlContains(expect, 10)); } @Story("不追溯的消毒物品申领发货流程") Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/foreigntousseapplication/ForeignTousseApplicationProxy.java =================================================================== diff -u -r34001 -r34011 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/foreigntousseapplication/ForeignTousseApplicationProxy.java (.../ForeignTousseApplicationProxy.java) (revision 34001) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/foreigntousseapplication/ForeignTousseApplicationProxy.java (.../ForeignTousseApplicationProxy.java) (revision 34011) @@ -1,5 +1,6 @@ package test.forgon.disinfectsystem.selenium3.page.foreigntousseapplication; +import io.qameta.allure.Step; import test.forgon.disinfectsystem.selenium3.Utils; public class ForeignTousseApplicationProxy { @@ -10,6 +11,7 @@ * 选择外来器械申请单列表上的第一张申请单点击批量确认归还 * @return */ + @Step("选择外来器械申请单列表上的第一张申请单点击批量确认归还") public String select_first_application_to_batch_return(){ foreignTousseApplicationHandle.click_first_application_checkbox(); foreignTousseApplicationHandle.click_batch_confirm_return_btn(); Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestRecycle.java =================================================================== diff -u -r33786 -r34011 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestRecycle.java (.../TestRecycle.java) (revision 33786) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/testscript/TestRecycle.java (.../TestRecycle.java) (revision 34011) @@ -59,9 +59,7 @@ awaitForRecycleProxy.choose_most_recent_application_by_type(appType); 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)); + Assert.assertTrue(Utils.waitUntilUrlContains(expect, 10)); } @After Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/pack/PackHandle.java =================================================================== diff -u -r34001 -r34011 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/pack/PackHandle.java (.../PackHandle.java) (revision 34001) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium3/page/pack/PackHandle.java (.../PackHandle.java) (revision 34011) @@ -5,7 +5,9 @@ import org.apache.log4j.Logger; import org.openqa.selenium.StaleElementReferenceException; import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; +import test.forgon.disinfectsystem.selenium3.Utils; import test.forgon.disinfectsystem.selenium3.basepage.BaseHandle; /** @@ -101,4 +103,96 @@ public void click_save_and_print_btn(){ packPage.get_save_and_print_btn().click(); } + + /** + * 点击外来器械拆包按钮 + */ + public void click_split_foreign_tousse_btn(){ + packPage.get_split_foreign_tousse_btn().click(); + } + + /** + * 点击外来器械拆包按钮 + */ + public void get_split_foreign_tousse_btn(){ + packPage.get_split_foreign_tousse_btn().click(); + } + + /** + * 双击拆分数量所在列的格子并输入拆分数量 + * @param i + */ + public void input_split_count(int i,String splitCount){ + Actions action = new Actions(Utils.driver); + action.doubleClick(packPage.get_split_count_td(i)).perform(); + action.sendKeys(splitCount+"\n").perform(); + } + + /** + * 双击拆分小包的包装类型所在列的格子 + * @param i 所在行数 + */ + public void double_click_package_type_of_split_tousse(int i){ + Actions action = new Actions(Utils.driver); + action.doubleClick(packPage.get_package_type_of_split_tousse(i)).perform(); + } + + /** + * 双击拆分小包的灭菌程序所在列的格子 + * @param i 所在行数 + */ + public void double_click_sterilization_program_of_split_tousse(int i){ + Actions action = new Actions(Utils.driver); + action.doubleClick(packPage.get_sterilization_program_of_split_tousse(i)).perform(); + } + + + /** + * 输入外来器械拆包窗口的配包人条码 + */ + public void input_packer_barcode2(String packerBarcode){ + input_text(packPage.get_packer_barcode2(), packerBarcode+"\n"); + } + + /** + * 输入外来器械拆包窗口的审核人条码 + */ + public void input_reviewer_barcode2(String reviewerBarcode){ + input_text(packPage.get_reviewer_barcode2(), reviewerBarcode+"\n"); + } + + /** + * 点击待拆分材料的全选框 + */ + public void click_select_all_checkbox(){ + packPage.get_select_all_checkbox().click(); + } + + /** + * 点击移动材料按钮1 + */ + public void click_move_material_btn1(){ + packPage.get_move_material_btn1().click(); + } + + /** + * 点击移动材料按钮2 + */ + public void click_move_material_btn2(){ + packPage.get_move_material_btn2().click(); + } + + /** + * 点击拆分按钮 + */ + public void click_split_btn(){ + packPage.get_split_btn().click(); + } + + /** + * 点击外来器械拆包窗口的装配并打印标签按钮 + */ + public void click_save_and_print_btn_in_split_win(){ + packPage.get_save_and_print_btn_in_split_win().click(); + } }