Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/sterilization/SterilizationTest.java =================================================================== diff -u -r18864 -r18880 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/sterilization/SterilizationTest.java (.../SterilizationTest.java) (revision 18864) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/sterilization/SterilizationTest.java (.../SterilizationTest.java) (revision 18880) @@ -13,6 +13,7 @@ import test.forgon.disinfectsystem.selenium.factory.WaitFactory; import test.forgon.disinfectsystem.selenium.sterilization.helper.SterilizationHelper; import test.forgon.disinfectsystem.selenium.tools.Utils; +import test.forgon.disinfectsystem.selenium.tools.Utils.ActionExecuteMethod; import org.apache.commons.lang3.StringUtils; import org.openqa.selenium.By; @@ -33,20 +34,18 @@ // login.login_oneSupplyRoom(); Wait wait = WaitFactory.createDefaultWait(); Utils.driver.switchTo().defaultContent(); - Utils.retryingFindAndDoAction( - By.xpath("//span[contains(text(), '个人桌面')]"),false, - Utils.ACTION_CLICK); + Utils.retryingFindAndClick( + By.xpath("//span[contains(text(), '个人桌面')]")); + Actions moveover = new Actions(Utils.driver); moveover.moveToElement( Utils.retryingFind(By.id("sterilizationRecord"))).perform(); - Utils.retryingFindAndDoAction(By.linkText(Utils.settings - .getJSONObject("灭菌炉分组").getString("大型压力蒸汽")),false, - Utils.ACTION_CLICK); + Utils.retryingFindAndClick(By.linkText(Utils.settings + .getJSONObject("灭菌炉分组").getString("大型压力蒸汽"))); - Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"),false, - Utils.ACTION_SWITCH_TO_FRAME); + Utils.retryingFindAndSwitchToFrame(By.id("iframe_sterilizationRecord")); - Utils.retryingFindAndDoAction(By.id("addBtn"), false, Utils.ACTION_CLICK); + Utils.retryingFindAndClick(By.id("addBtn")); Utils.driver.switchTo().defaultContent(); Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); @@ -64,125 +63,96 @@ .id("sterilizationUser")); Utils.waitPageLoaded(); // 扫描灭菌炉条码=》灭菌程序条码=》用户条码=》灭菌目的选择“器械包灭菌”=》篮筐或者器械包条码 - Utils.retryingFindAndDoAction(By.id("inputBarcode"),false, - Utils.ACTION_SENDKEYS, sterilizerBarcode + "\n"); - Utils.retryingFindAndDoAction(By.id("inputBarcode"),false, - Utils.ACTION_SENDKEYS, sterilizationProcedureBarcode + "\n"); + Utils.retryingFindAndSendKeys(By.id("inputBarcode"), sterilizerBarcode + "\n"); + Utils.retryingFindAndSendKeys(By.id("inputBarcode"), sterilizationProcedureBarcode + "\n"); if (StringUtils.isBlank(text)) { // 有的医院不需要扫描灭菌员 - Utils.retryingFindAndDoAction(By.id("inputBarcode"),false, - Utils.ACTION_SENDKEYS, cssduser1Barcode + "\n"); + Utils.retryingFindAndSendKeys(By.id("inputBarcode"), cssduser1Barcode + "\n"); } - Utils.retryingFindAndDoAction(By.id("sterilizationPurpose"),false, - Utils.ACTION_SENDKEYS, Keys.DOWN); - Utils.retryingFindAndDoAction( - By.xpath("//div[contains(text(), '器械包灭菌')]"),false, - Utils.ACTION_CLICK); + Utils.retryingFindAndSendKeys(By.id("sterilizationPurpose"), Keys.DOWN); + Utils.retryingFindAndClick( + By.xpath("//div[contains(text(), '器械包灭菌')]")); // 扫描物品或者审核篮筐 String basketBarcode = Utils.settings.getJSONObject("灭菌篮筐01") .getString("条码"); List notEntryBasketTousseBarcods = SterilizationHelper.notEntryBasketTousseBarcods; String tempBarcode = notEntryBasketTousseBarcods.get(0); - Utils.retryingFindAndDoAction(By.id("inputBarcode"),false, - Utils.ACTION_SENDKEYS, basketBarcode + "\n"); + Utils.retryingFindAndSendKeys(By.id("inputBarcode"), basketBarcode + "\n"); // int length = notEntryBasketTousseBarcods.size(); for (int i = 0; i < 2; i++) { - Utils.retryingFindAndDoAction(By.id("inputBarcode"),false, - Utils.ACTION_SENDKEYS, + Utils.retryingFindAndSendKeys(By.id("inputBarcode"), notEntryBasketTousseBarcods.get(i) + "\n"); } - Utils.retryingFindAndDoAction(By.id("btnBatchAddTousse"),false, - Utils.ACTION_CLICK); // 一键入炉 + Utils.retryingFindAndClick(By.id("btnBatchAddTousse")); // 一键入炉 //确认保存按钮被点击 wait.until(ExpectedConditions.elementToBeClickable(By .id("saveBtn"))); - // 保存灭菌记录 - Utils.retryingFindAndDoAction(By.id("saveBtn"), false, Utils.ACTION_CLICK); + Utils.retryingFindAndClickByJavaScript(By.id("saveBtn")); SterilizationHelper.炉次_1号高温蒸汽灭菌炉++; // 灭菌中断 - Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"),false, - Utils.ACTION_SWITCH_TO_FRAME); + Utils.retryingFindAndSwitchToFrame(By.id("iframe_sterilizationRecord")); //等待表单提交成功 wait.until(ExpectedConditions.attributeToBe(Utils.driver.findElement(By .id("formSubmitResult")), "value", "1")); - Utils.retryingFindAndDoAction( + Utils.retryingFindAndClick( By.id(sterilizerName + "-" - + SterilizationHelper.炉次_1号高温蒸汽灭菌炉),false, - Utils.ACTION_CLICK); - Utils.retryingFindAndDoAction(By.id("sterilizationInterruptBtn"),false, - Utils.ACTION_CLICK); + + SterilizationHelper.炉次_1号高温蒸汽灭菌炉)); + Utils.retryingFindAndClick(By.id("sterilizationInterruptBtn")); Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); - Utils.retryingFindAndDoAction( - By.xpath("//button[contains(text(), '是')]"),false, - Utils.ACTION_CLICK); + Utils.retryingFindAndClick( + By.xpath("//button[contains(text(), '是')]")); // 灭菌中断后添加质量监测 // Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); Utils.waitPageLoaded(); Utils.doWait(500); - Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"),false, - Utils.ACTION_SWITCH_TO_FRAME); + Utils.retryingFindAndSwitchToFrame(By.id("iframe_sterilizationRecord")); Utils.doWait(500); - Utils.retryingFindAndDoAction(By.id("formName"),false, - Utils.ACTION_SENDKEYS, Keys.DOWN); - Utils.retryingFindAndDoAction( - By.xpath("//div[contains(text(), '无')]"),false, - Utils.ACTION_CLICK); - Utils.retryingFindAndDoAction( - By.xpath("//button[contains(text(), '保存')]"),false, - Utils.ACTION_CLICK); + Utils.retryingFindAndSendKeys(By.id("formName"), Keys.DOWN); + Utils.retryingFindAndClick( + By.xpath("//div[contains(text(), '无')]")); + Utils.retryingFindAndClick( + By.xpath("//button[contains(text(), '保存')]")); // 继续灭菌 // Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"), // Utils.ACTION_SWITCH_TO_FRAME); - Utils.retryingFindAndDoAction( + Utils.retryingFindAndClick( By.id(sterilizerName + "-" + SterilizationHelper.炉次_1号高温蒸汽灭菌炉 - + "-interruptionHandle"), false, Utils.ACTION_CLICK); + + "-interruptionHandle")); Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); - Utils.retryingFindAndDoAction(By.id("continueBtn"),false, - Utils.ACTION_CLICK); + Utils.retryingFindAndClick(By.id("continueBtn")); Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); - Utils.retryingFindAndDoAction( - By.xpath("//button[contains(text(), '是')]"),false, - Utils.ACTION_CLICK); + Utils.retryingFindAndClick( + By.xpath("//button[contains(text(), '是')]")); // 灭菌失败 - Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"),false, - Utils.ACTION_SWITCH_TO_FRAME); - Utils.retryingFindAndDoAction( + Utils.retryingFindAndSwitchToFrame(By.id("iframe_sterilizationRecord")); + Utils.retryingFindAndClick( By.id(sterilizerName + "-" - + SterilizationHelper.炉次_1号高温蒸汽灭菌炉),false, - Utils.ACTION_CLICK); - Utils.retryingFindAndDoAction(By.id("sterilizationFailureBtn"),false, - Utils.ACTION_CLICK); + + SterilizationHelper.炉次_1号高温蒸汽灭菌炉)); + Utils.retryingFindAndClick(By.id("sterilizationFailureBtn")); Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); - Utils.retryingFindAndDoAction( - By.xpath("//button[contains(text(), '是')]"),false, - Utils.ACTION_CLICK); + Utils.retryingFindAndClick( + By.xpath("//button[contains(text(), '是')]")); // 灭菌失败后添加质量监测 // Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); Utils.waitPageLoaded(); Utils.doWait(500); - Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"),false, - Utils.ACTION_SWITCH_TO_FRAME); + Utils.retryingFindAndSwitchToFrame(By.id("iframe_sterilizationRecord")); Utils.doWait(500); - Utils.retryingFindAndDoAction(By.id("formName"),false, - Utils.ACTION_SENDKEYS, Keys.DOWN); - Utils.retryingFindAndDoAction( - By.xpath("//div[contains(text(), '灭菌失败事件')]"),false, - Utils.ACTION_CLICK); - Utils.retryingFindAndDoAction(By.id("tempBarcode"),false, - Utils.ACTION_SENDKEYS, tempBarcode + "\n"); - Utils.retryingFindAndDoAction(By.id("repacking"),false, - Utils.ACTION_CLICK); - Utils.retryingFindAndDoAction( - By.xpath("//button[contains(text(), '保存')]"),false, - Utils.ACTION_CLICK); + Utils.retryingFindAndSendKeys(By.id("formName"), Keys.DOWN); + Utils.retryingFindAndClick( + By.xpath("//div[contains(text(), '灭菌失败事件')]")); + Utils.retryingFindAndSendKeys(By.id("tempBarcode"), tempBarcode + "\n"); + Utils.retryingFindAndClick(By.id("repacking")); + Utils.retryingFindAndClick( + By.xpath("//button[contains(text(), '保存')]")); // 重新灭菌 // Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"), @@ -198,72 +168,57 @@ } Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); Utils.doWait(1000); - Utils.retryingFindAndDoAction( - By.xpath("//button[contains(text(), '重新灭菌')]"),false, - Utils.ACTION_CLICK); // 他的id是saveBtn + Utils.retryingFindAndClick( + By.xpath("//button[contains(text(), '重新灭菌')]")); // 他的id是saveBtn SterilizationHelper.炉次_1号高温蒸汽灭菌炉++; // 完成灭菌 - Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"),false, - Utils.ACTION_SWITCH_TO_FRAME); - Utils.retryingFindAndDoAction( + Utils.retryingFindAndSwitchToFrame(By.id("iframe_sterilizationRecord")); + Utils.retryingFindAndClick( By.id(sterilizerName + "-" - + SterilizationHelper.炉次_1号高温蒸汽灭菌炉),false, - Utils.ACTION_CLICK); - Utils.retryingFindAndDoAction(By.id("completeSterilizationBtn"),false, - Utils.ACTION_CLICK); + + SterilizationHelper.炉次_1号高温蒸汽灭菌炉)); + Utils.retryingFindAndClick(By.id("completeSterilizationBtn")); Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); try { // 有的医院需要扫描灭菌完成确认人 WebElement completeUserBarcode = Utils.driver.findElement(By .id("completeUserBarcode")); - Utils.retryingFindAndDoAction(By.id("completeUserBarcode"),false, - Utils.ACTION_SENDKEYS, cssduser1Barcode + "\n"); - Utils.retryingFindAndDoAction(By.id("saveBtn"),false, - Utils.ACTION_CLICK); + Utils.retryingFindAndSendKeys(By.id("completeUserBarcode"), cssduser1Barcode + "\n"); + Utils.retryingFindAndClickByJavaScript(By.id("saveBtn")); } catch (Exception e1) { // 这里报错说明不需要扫描灭菌完成确认人 - Utils.retryingFindAndDoAction( - By.xpath("//button[contains(text(), '是')]"),false, - Utils.ACTION_CLICK); + Utils.retryingFindAndClick( + By.xpath("//button[contains(text(), '是')]")); } - Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"),false, - Utils.ACTION_SWITCH_TO_FRAME); + Utils.retryingFindAndSwitchToFrame(By.id("iframe_sterilizationRecord")); try { WebElement confirmBtn = Utils.driver.findElement(By .id("confirmBtn")); if (confirmBtn.isDisplayed()) { // 灭菌卸载、或者灭菌确认 - Utils.retryingFindAndDoAction( + Utils.retryingFindAndClick( By.id(sterilizerName + "-" - + SterilizationHelper.炉次_1号高温蒸汽灭菌炉),false, - Utils.ACTION_CLICK); - Utils.retryingFindAndDoAction(By.id("confirmBtn"),false, - Utils.ACTION_CLICK); + + SterilizationHelper.炉次_1号高温蒸汽灭菌炉)); + Utils.retryingFindAndClick(By.id("confirmBtn")); Utils.driver.switchTo().window( Utils.driver.getWindowHandle()); - Utils.retryingFindAndDoAction( - By.id("completeUserBarcode1"),false, - Utils.ACTION_SENDKEYS, cssduser1Barcode + "\n"); - Utils.retryingFindAndDoAction(By.id("saveBtn"),false, - Utils.ACTION_CLICK); - Utils.retryingFindAndDoAction( - By.id("iframe_sterilizationRecord"),false, - Utils.ACTION_SWITCH_TO_FRAME); + Utils.retryingFindAndSendKeys( + By.id("completeUserBarcode1"), cssduser1Barcode + "\n"); + Utils.retryingFindAndClickByJavaScript(By.id("saveBtn")); + Utils.retryingFindAndSwitchToFrame( + By.id("iframe_sterilizationRecord")); } } catch (Exception e) { // 这里报错说明不需要灭菌卸载、或者灭菌确认 } Utils.waitPageLoaded(); Utils.doWait(1500); // 填写灭菌监测 - Utils.retryingFindAndDoAction( + Utils.retryingFindAndClick( By.id(sterilizerName + "-" - + SterilizationHelper.炉次_1号高温蒸汽灭菌炉),false, - Utils.ACTION_CLICK); + + SterilizationHelper.炉次_1号高温蒸汽灭菌炉)); Utils.doWait(500); - Utils.retryingFindAndDoAction(By.id("modifyBtn"),false, - Utils.ACTION_CLICK); + Utils.retryingFindAndClick(By.id("modifyBtn")); Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); Utils.doWait(500); String javaScript = "Ext.getCmp('physicsResult').setValue('合格');"; @@ -275,18 +230,13 @@ Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MINUTE, 30); - Utils.retryingFindAndDoAction( - By.id("biologicalMonitoringStartDate"),false, - Utils.ACTION_SENDKEYS, sdf.format(calendar.getTime())); + Utils.retryingFindAndSendKeys( + By.id("biologicalMonitoringStartDate"), sdf.format(calendar.getTime())); calendar.add(Calendar.MINUTE, 30); - Utils.retryingFindAndDoAction(By.id("biologicalMonitoringEndDate"),false, - Utils.ACTION_SENDKEYS, sdf.format(calendar.getTime())); - Utils.retryingFindAndDoAction(By.id("monitorUserBarcode"),false, - Utils.ACTION_SENDKEYS, cssduser1Barcode + "\n"); - Utils.retryingFindAndDoAction(By.id("monitorCheckerBarcode"),false, - Utils.ACTION_SENDKEYS, cssduser1Barcode + "\n"); - Utils.retryingFindAndDoAction(By.id("monitorBtn"),false, - Utils.ACTION_CLICK); + Utils.retryingFindAndSendKeys(By.id("biologicalMonitoringEndDate"), sdf.format(calendar.getTime())); + Utils.retryingFindAndSendKeys(By.id("monitorUserBarcode"), cssduser1Barcode + "\n"); + Utils.retryingFindAndSendKeys(By.id("monitorCheckerBarcode"), cssduser1Barcode + "\n"); + Utils.retryingFindAndClick(By.id("monitorBtn")); Utils.driver.quit(); } catch (Exception e) { e.printStackTrace(); Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/apply/ApplyTest.java =================================================================== diff -u -r18864 -r18880 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/apply/ApplyTest.java (.../ApplyTest.java) (revision 18864) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/apply/ApplyTest.java (.../ApplyTest.java) (revision 18880) @@ -28,6 +28,7 @@ import test.forgon.disinfectsystem.selenium.apply.service.BorrowApplyServiceImpl; import test.forgon.disinfectsystem.selenium.tools.LoginUtil; import test.forgon.disinfectsystem.selenium.tools.Utils; +import test.forgon.disinfectsystem.selenium.tools.Utils.ActionExecuteMethod; import java.util.concurrent.TimeUnit; import java.util.function.Function; @@ -256,7 +257,7 @@ .xpath("//button[contains(text(), '是')]")); } }); - Utils.clickWebElement(false, yesbutton); + Utils.clickWebElement(ActionExecuteMethod.ByTagType, yesbutton); } } } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Delivery.java =================================================================== diff -u -r18866 -r18880 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Delivery.java (.../Delivery.java) (revision 18866) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Delivery.java (.../Delivery.java) (revision 18880) @@ -13,6 +13,7 @@ import org.openqa.selenium.os.WindowsUtils; import test.forgon.disinfectsystem.selenium.tools.Utils; +import test.forgon.disinfectsystem.selenium.tools.Utils.ActionExecuteMethod; public class Delivery { @BeforeMethod @@ -480,9 +481,9 @@ if (Utils.isFind(element)) { // 等待仓库加载 - Utils.retryingFindAndDoAction( - By.xpath("//input[contains(@value, '测试供应室仓库')]"), false, - Utils.ACTION_NOP); + Utils.retryingFind( + By.xpath("//input[contains(@value, '测试供应室仓库')]")); + Utils.retryingFindAndSendKeys(By.id("departBarcode"), Utils.settings.getJSONObject("临床科室").getString("条码") + "\n"); @@ -535,9 +536,8 @@ if (Utils.isFind(element)) { // 等待仓库加载 - Utils.retryingFindAndDoAction( - By.xpath("//input[contains(@value, '测试供应室仓库')]"), false, - Utils.ACTION_NOP); + Utils.retryingFind( + By.xpath("//input[contains(@value, '测试供应室仓库')]")); Utils.retryingFindAndSendKeys(By.id("senderBarcode"), Utils.settings.getJSONObject("一级供应室用户").getString("条码") Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Apply.java =================================================================== diff -u -r18864 -r18880 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Apply.java (.../Apply.java) (revision 18864) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Apply.java (.../Apply.java) (revision 18880) @@ -21,6 +21,7 @@ import test.forgon.disinfectsystem.selenium.factory.WaitFactory; import test.forgon.disinfectsystem.selenium.tools.Utils; +import test.forgon.disinfectsystem.selenium.tools.Utils.ActionExecuteMethod; /** * @author cherry 2016-07-18 @@ -217,7 +218,7 @@ } }); - Utils.clickWebElement(false, yesbutton); + Utils.clickWebElement(ActionExecuteMethod.ByTagType, yesbutton); } else { @@ -487,7 +488,7 @@ } }); - Utils.clickWebElement(false, yesbutton); + Utils.clickWebElement(ActionExecuteMethod.ByTagType, yesbutton); } else { @@ -765,7 +766,7 @@ } }); - Utils.clickWebElement(false, yesbutton); + Utils.clickWebElement(ActionExecuteMethod.ByTagType, yesbutton); } Utils.doWait(500); } catch (Exception e) { Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/Utils.java =================================================================== diff -u -r18868 -r18880 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/Utils.java (.../Utils.java) (revision 18868) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/Utils.java (.../Utils.java) (revision 18880) @@ -65,6 +65,19 @@ * 测试用例的运行模式 */ private static int testRunMode = RUN_MODE_REMOTE; + + /* + * 执行动作的方式,调用JS或者Selenium API + * + * JavaScript:通过js方式调用 + * API:通过API方式调用 + * ByTagType:根据标签类型决定 + */ + public enum ActionExecuteMethod { + + JavaScript, API, ByTagType + + } // public static Wait wait; @@ -350,7 +363,7 @@ * @param forceRunSeleniumAPI 是否强制用selniumAPI执行动作 * @return */ - public static WebElement retryingFindAndDoAction(By by,boolean forceRunSeleniumAPI, String actionType, + private static WebElement retryingFindAndDoAction(By by,ActionExecuteMethod actionExecuteMethod, String actionType, CharSequence... keys) { WebElement element = null; int attempts = 0; @@ -392,13 +405,7 @@ if (!"true".equalsIgnoreCase(attribute) && element.isEnabled()) { - if (forceRunSeleniumAPI){ - element.click(); - } - else{ - clickWebElement(forceRunSeleniumAPI, element); - } - + clickWebElement(actionExecuteMethod, element); logger.info("点击元素[" + by + "]成功"); } else { logger.info("元素[" + by + "]不是Enable状态,不能点击"); @@ -474,7 +481,7 @@ */ public static WebElement retryingFindAndClick(By by) { - return retryingFindAndDoAction(by, false, ACTION_CLICK); + return retryingFindAndDoAction(by, ActionExecuteMethod.ByTagType, ACTION_CLICK); } /** @@ -484,22 +491,33 @@ */ public static WebElement retryingFindAndClickBySeleniumAPI(By by) { - return retryingFindAndDoAction(by, true, ACTION_CLICK); + return retryingFindAndDoAction(by, ActionExecuteMethod.API, ACTION_CLICK); } + + /** + * 通过Javascript进行点击,避免Selenium API点击不成功 + * @param by + * @return + */ + public static WebElement retryingFindAndClickByJavaScript(By by) { + return retryingFindAndDoAction(by, ActionExecuteMethod.JavaScript, ACTION_CLICK); + } + + /** * 重复查找和清空内容,当出现引用的element过时后,重新查找该element * * @param by * @return */ public static WebElement retryingFindAndClear(By by) { - return retryingFindAndDoAction(by, false, ACTION_CLEAR); + return retryingFindAndDoAction(by, ActionExecuteMethod.ByTagType, ACTION_CLEAR); } public static WebElement retryingFindAndSendKeys(By by, java.lang.CharSequence... keys) { - return retryingFindAndDoAction(by, false, ACTION_SENDKEYS, keys); + return retryingFindAndDoAction(by, ActionExecuteMethod.ByTagType, ACTION_SENDKEYS, keys); } /** @@ -542,7 +560,7 @@ * @return */ public static WebElement retryingFindAndSwitchToFrame(By by) { - return retryingFindAndDoAction(by, false, ACTION_SWITCH_TO_FRAME); + return retryingFindAndDoAction(by, ActionExecuteMethod.ByTagType, ACTION_SWITCH_TO_FRAME); } /** @@ -613,7 +631,7 @@ try { webElement = tryFind(by); if (isFind(webElement)) { - clickWebElement(false, webElement); + clickWebElement(ActionExecuteMethod.ByTagType, webElement); } // webElement = findByAwait(by, confirmWaitSetting); } catch (Exception ignored) { @@ -835,7 +853,7 @@ WebElement cell = getFirstCellOfTable(table); if (cell != null) { // cell.click(); - clickWebElement(false, cell); + clickWebElement(ActionExecuteMethod.ByTagType, cell); } result = true; break; @@ -1269,33 +1287,43 @@ /** * 点击WebElement的通用方法,建议都通过此方法调用,以便统一更换最可靠的方法 * - * @param forceRunSeleniumAPI 是否强制用selenium的API调用,因为JS调用弹出Alert或模态窗口可能导致阻塞 + * @param ActionExecuteMethod 是否强制用selenium的API调用,因为JS调用弹出Alert或模态窗口可能导致阻塞 * @param webElement * */ - public static void clickWebElement(boolean forceRunSeleniumAPI, WebElement webElement) { - // jsClick(webElement); - String tagName = webElement.getTagName(); + public static void clickWebElement(ActionExecuteMethod actionExecuteMethod, WebElement webElement) { - // span标签:导航菜单 - // a标签:很多ExtJS的按钮,例如申请单的终止按钮 - // img标签:登录按钮为img标签 - // li标签:桌面的图标按钮 - // table标签:灭菌记录表单的保存按钮 - - // P标签用js无法选中 - // p标签:视图列表中的清洗失败记录的选择 - - String[] tagNamesClickByJS = new String[] {"button" , "a" , "span", "img", "li", "table"}; - - // 如果不强制调用selenium API,并且是需要采用JavaScript点击的标签类型,则用JS进行点击 - if (!forceRunSeleniumAPI && ArrayUtils.contains(tagNamesClickByJS, tagName)) { - + if (actionExecuteMethod.equals(ActionExecuteMethod.API)){ + webElement.click(); + } + else if (actionExecuteMethod.equals(ActionExecuteMethod.JavaScript)){ jsClick(webElement); - } else { - if (isFind(webElement)) { - webElement.click(); + } + else if (actionExecuteMethod.equals(ActionExecuteMethod.ByTagType)){ + // jsClick(webElement); + String tagName = webElement.getTagName(); + + // span标签:导航菜单 + // a标签:很多ExtJS的按钮,例如申请单的终止按钮 + // img标签:登录按钮为img标签 + // li标签:桌面的图标按钮 + + // table标签:灭菌记录表单的保存按钮 + + // P标签用js无法选中 + // p标签:视图列表中的清洗失败记录的选择 + + String[] tagNamesClickByJS = new String[] {"button" , "a" , "span", "img", "li"}; + + // 如果不强制调用selenium API,并且是需要采用JavaScript点击的标签类型,则用JS进行点击 + if (ArrayUtils.contains(tagNamesClickByJS, tagName)) { + + jsClick(webElement); + } else { + if (isFind(webElement)) { + webElement.click(); + } } } }