Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/sterilization/SterilizationTest.java =================================================================== diff -u -r18856 -r18864 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/sterilization/SterilizationTest.java (.../SterilizationTest.java) (revision 18856) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/sterilization/SterilizationTest.java (.../SterilizationTest.java) (revision 18864) @@ -34,19 +34,19 @@ Wait wait = WaitFactory.createDefaultWait(); Utils.driver.switchTo().defaultContent(); Utils.retryingFindAndDoAction( - By.xpath("//span[contains(text(), '个人桌面')]"), + By.xpath("//span[contains(text(), '个人桌面')]"),false, Utils.ACTION_CLICK); Actions moveover = new Actions(Utils.driver); moveover.moveToElement( Utils.retryingFind(By.id("sterilizationRecord"))).perform(); Utils.retryingFindAndDoAction(By.linkText(Utils.settings - .getJSONObject("灭菌炉分组").getString("大型压力蒸汽")), + .getJSONObject("灭菌炉分组").getString("大型压力蒸汽")),false, Utils.ACTION_CLICK); - Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"), + Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"),false, Utils.ACTION_SWITCH_TO_FRAME); - Utils.retryingFindAndDoAction(By.id("addBtn"), Utils.ACTION_CLICK); + Utils.retryingFindAndDoAction(By.id("addBtn"), false, Utils.ACTION_CLICK); Utils.driver.switchTo().defaultContent(); Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); @@ -64,75 +64,75 @@ .id("sterilizationUser")); Utils.waitPageLoaded(); // 扫描灭菌炉条码=》灭菌程序条码=》用户条码=》灭菌目的选择“器械包灭菌”=》篮筐或者器械包条码 - Utils.retryingFindAndDoAction(By.id("inputBarcode"), + Utils.retryingFindAndDoAction(By.id("inputBarcode"),false, Utils.ACTION_SENDKEYS, sterilizerBarcode + "\n"); - Utils.retryingFindAndDoAction(By.id("inputBarcode"), + Utils.retryingFindAndDoAction(By.id("inputBarcode"),false, Utils.ACTION_SENDKEYS, sterilizationProcedureBarcode + "\n"); if (StringUtils.isBlank(text)) { // 有的医院不需要扫描灭菌员 - Utils.retryingFindAndDoAction(By.id("inputBarcode"), + Utils.retryingFindAndDoAction(By.id("inputBarcode"),false, Utils.ACTION_SENDKEYS, cssduser1Barcode + "\n"); } - Utils.retryingFindAndDoAction(By.id("sterilizationPurpose"), + Utils.retryingFindAndDoAction(By.id("sterilizationPurpose"),false, Utils.ACTION_SENDKEYS, Keys.DOWN); Utils.retryingFindAndDoAction( - By.xpath("//div[contains(text(), '器械包灭菌')]"), + By.xpath("//div[contains(text(), '器械包灭菌')]"),false, Utils.ACTION_CLICK); // 扫描物品或者审核篮筐 String basketBarcode = Utils.settings.getJSONObject("灭菌篮筐01") .getString("条码"); List notEntryBasketTousseBarcods = SterilizationHelper.notEntryBasketTousseBarcods; String tempBarcode = notEntryBasketTousseBarcods.get(0); - Utils.retryingFindAndDoAction(By.id("inputBarcode"), + Utils.retryingFindAndDoAction(By.id("inputBarcode"),false, Utils.ACTION_SENDKEYS, basketBarcode + "\n"); // int length = notEntryBasketTousseBarcods.size(); for (int i = 0; i < 2; i++) { - Utils.retryingFindAndDoAction(By.id("inputBarcode"), + Utils.retryingFindAndDoAction(By.id("inputBarcode"),false, Utils.ACTION_SENDKEYS, notEntryBasketTousseBarcods.get(i) + "\n"); } - Utils.retryingFindAndDoAction(By.id("btnBatchAddTousse"), + Utils.retryingFindAndDoAction(By.id("btnBatchAddTousse"),false, Utils.ACTION_CLICK); // 一键入炉 //确认保存按钮被点击 wait.until(ExpectedConditions.elementToBeClickable(By .id("saveBtn"))); // 保存灭菌记录 - Utils.retryingFindAndDoAction(By.id("saveBtn"), Utils.ACTION_CLICK); + Utils.retryingFindAndDoAction(By.id("saveBtn"), false, Utils.ACTION_CLICK); SterilizationHelper.炉次_1号高温蒸汽灭菌炉++; // 灭菌中断 - Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"), + Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"),false, Utils.ACTION_SWITCH_TO_FRAME); //等待表单提交成功 wait.until(ExpectedConditions.attributeToBe(Utils.driver.findElement(By .id("formSubmitResult")), "value", "1")); Utils.retryingFindAndDoAction( By.id(sterilizerName + "-" - + SterilizationHelper.炉次_1号高温蒸汽灭菌炉), + + SterilizationHelper.炉次_1号高温蒸汽灭菌炉),false, Utils.ACTION_CLICK); - Utils.retryingFindAndDoAction(By.id("sterilizationInterruptBtn"), + Utils.retryingFindAndDoAction(By.id("sterilizationInterruptBtn"),false, Utils.ACTION_CLICK); Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); Utils.retryingFindAndDoAction( - By.xpath("//button[contains(text(), '是')]"), + By.xpath("//button[contains(text(), '是')]"),false, Utils.ACTION_CLICK); // 灭菌中断后添加质量监测 // Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); Utils.waitPageLoaded(); Utils.doWait(500); - Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"), + Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"),false, Utils.ACTION_SWITCH_TO_FRAME); Utils.doWait(500); - Utils.retryingFindAndDoAction(By.id("formName"), + Utils.retryingFindAndDoAction(By.id("formName"),false, Utils.ACTION_SENDKEYS, Keys.DOWN); Utils.retryingFindAndDoAction( - By.xpath("//div[contains(text(), '无')]"), + By.xpath("//div[contains(text(), '无')]"),false, Utils.ACTION_CLICK); Utils.retryingFindAndDoAction( - By.xpath("//button[contains(text(), '保存')]"), + By.xpath("//button[contains(text(), '保存')]"),false, Utils.ACTION_CLICK); // 继续灭菌 @@ -141,47 +141,47 @@ Utils.retryingFindAndDoAction( By.id(sterilizerName + "-" + SterilizationHelper.炉次_1号高温蒸汽灭菌炉 - + "-interruptionHandle"), Utils.ACTION_CLICK); + + "-interruptionHandle"), false, Utils.ACTION_CLICK); Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); - Utils.retryingFindAndDoAction(By.id("continueBtn"), + Utils.retryingFindAndDoAction(By.id("continueBtn"),false, Utils.ACTION_CLICK); Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); Utils.retryingFindAndDoAction( - By.xpath("//button[contains(text(), '是')]"), + By.xpath("//button[contains(text(), '是')]"),false, Utils.ACTION_CLICK); // 灭菌失败 - Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"), + Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"),false, Utils.ACTION_SWITCH_TO_FRAME); Utils.retryingFindAndDoAction( By.id(sterilizerName + "-" - + SterilizationHelper.炉次_1号高温蒸汽灭菌炉), + + SterilizationHelper.炉次_1号高温蒸汽灭菌炉),false, Utils.ACTION_CLICK); - Utils.retryingFindAndDoAction(By.id("sterilizationFailureBtn"), + Utils.retryingFindAndDoAction(By.id("sterilizationFailureBtn"),false, Utils.ACTION_CLICK); Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); Utils.retryingFindAndDoAction( - By.xpath("//button[contains(text(), '是')]"), + By.xpath("//button[contains(text(), '是')]"),false, Utils.ACTION_CLICK); // 灭菌失败后添加质量监测 // Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); Utils.waitPageLoaded(); Utils.doWait(500); - Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"), + Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"),false, Utils.ACTION_SWITCH_TO_FRAME); Utils.doWait(500); - Utils.retryingFindAndDoAction(By.id("formName"), + Utils.retryingFindAndDoAction(By.id("formName"),false, Utils.ACTION_SENDKEYS, Keys.DOWN); Utils.retryingFindAndDoAction( - By.xpath("//div[contains(text(), '灭菌失败事件')]"), + By.xpath("//div[contains(text(), '灭菌失败事件')]"),false, Utils.ACTION_CLICK); - Utils.retryingFindAndDoAction(By.id("tempBarcode"), + Utils.retryingFindAndDoAction(By.id("tempBarcode"),false, Utils.ACTION_SENDKEYS, tempBarcode + "\n"); - Utils.retryingFindAndDoAction(By.id("repacking"), + Utils.retryingFindAndDoAction(By.id("repacking"),false, Utils.ACTION_CLICK); Utils.retryingFindAndDoAction( - By.xpath("//button[contains(text(), '保存')]"), + By.xpath("//button[contains(text(), '保存')]"),false, Utils.ACTION_CLICK); // 重新灭菌 @@ -199,56 +199,56 @@ Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); Utils.doWait(1000); Utils.retryingFindAndDoAction( - By.xpath("//button[contains(text(), '重新灭菌')]"), + By.xpath("//button[contains(text(), '重新灭菌')]"),false, Utils.ACTION_CLICK); // 他的id是saveBtn SterilizationHelper.炉次_1号高温蒸汽灭菌炉++; // 完成灭菌 - Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"), + Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"),false, Utils.ACTION_SWITCH_TO_FRAME); Utils.retryingFindAndDoAction( By.id(sterilizerName + "-" - + SterilizationHelper.炉次_1号高温蒸汽灭菌炉), + + SterilizationHelper.炉次_1号高温蒸汽灭菌炉),false, Utils.ACTION_CLICK); - Utils.retryingFindAndDoAction(By.id("completeSterilizationBtn"), + Utils.retryingFindAndDoAction(By.id("completeSterilizationBtn"),false, Utils.ACTION_CLICK); Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); try { // 有的医院需要扫描灭菌完成确认人 WebElement completeUserBarcode = Utils.driver.findElement(By .id("completeUserBarcode")); - Utils.retryingFindAndDoAction(By.id("completeUserBarcode"), + Utils.retryingFindAndDoAction(By.id("completeUserBarcode"),false, Utils.ACTION_SENDKEYS, cssduser1Barcode + "\n"); - Utils.retryingFindAndDoAction(By.id("saveBtn"), + Utils.retryingFindAndDoAction(By.id("saveBtn"),false, Utils.ACTION_CLICK); } catch (Exception e1) { // 这里报错说明不需要扫描灭菌完成确认人 Utils.retryingFindAndDoAction( - By.xpath("//button[contains(text(), '是')]"), + By.xpath("//button[contains(text(), '是')]"),false, Utils.ACTION_CLICK); } - Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"), + Utils.retryingFindAndDoAction(By.id("iframe_sterilizationRecord"),false, Utils.ACTION_SWITCH_TO_FRAME); try { WebElement confirmBtn = Utils.driver.findElement(By .id("confirmBtn")); if (confirmBtn.isDisplayed()) { // 灭菌卸载、或者灭菌确认 Utils.retryingFindAndDoAction( By.id(sterilizerName + "-" - + SterilizationHelper.炉次_1号高温蒸汽灭菌炉), + + SterilizationHelper.炉次_1号高温蒸汽灭菌炉),false, Utils.ACTION_CLICK); - Utils.retryingFindAndDoAction(By.id("confirmBtn"), + Utils.retryingFindAndDoAction(By.id("confirmBtn"),false, Utils.ACTION_CLICK); Utils.driver.switchTo().window( Utils.driver.getWindowHandle()); Utils.retryingFindAndDoAction( - By.id("completeUserBarcode1"), + By.id("completeUserBarcode1"),false, Utils.ACTION_SENDKEYS, cssduser1Barcode + "\n"); - Utils.retryingFindAndDoAction(By.id("saveBtn"), + Utils.retryingFindAndDoAction(By.id("saveBtn"),false, Utils.ACTION_CLICK); Utils.retryingFindAndDoAction( - By.id("iframe_sterilizationRecord"), + By.id("iframe_sterilizationRecord"),false, Utils.ACTION_SWITCH_TO_FRAME); } } catch (Exception e) { @@ -259,10 +259,10 @@ // 填写灭菌监测 Utils.retryingFindAndDoAction( By.id(sterilizerName + "-" - + SterilizationHelper.炉次_1号高温蒸汽灭菌炉), + + SterilizationHelper.炉次_1号高温蒸汽灭菌炉),false, Utils.ACTION_CLICK); Utils.doWait(500); - Utils.retryingFindAndDoAction(By.id("modifyBtn"), + Utils.retryingFindAndDoAction(By.id("modifyBtn"),false, Utils.ACTION_CLICK); Utils.driver.switchTo().window(Utils.driver.getWindowHandle()); Utils.doWait(500); @@ -276,16 +276,16 @@ calendar.add(Calendar.MINUTE, 30); Utils.retryingFindAndDoAction( - By.id("biologicalMonitoringStartDate"), + By.id("biologicalMonitoringStartDate"),false, Utils.ACTION_SENDKEYS, sdf.format(calendar.getTime())); calendar.add(Calendar.MINUTE, 30); - Utils.retryingFindAndDoAction(By.id("biologicalMonitoringEndDate"), + Utils.retryingFindAndDoAction(By.id("biologicalMonitoringEndDate"),false, Utils.ACTION_SENDKEYS, sdf.format(calendar.getTime())); - Utils.retryingFindAndDoAction(By.id("monitorUserBarcode"), + Utils.retryingFindAndDoAction(By.id("monitorUserBarcode"),false, Utils.ACTION_SENDKEYS, cssduser1Barcode + "\n"); - Utils.retryingFindAndDoAction(By.id("monitorCheckerBarcode"), + Utils.retryingFindAndDoAction(By.id("monitorCheckerBarcode"),false, Utils.ACTION_SENDKEYS, cssduser1Barcode + "\n"); - Utils.retryingFindAndDoAction(By.id("monitorBtn"), + Utils.retryingFindAndDoAction(By.id("monitorBtn"),false, Utils.ACTION_CLICK); Utils.driver.quit(); } catch (Exception e) { Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Assemble.java =================================================================== diff -u -r18810 -r18864 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Assemble.java (.../Assemble.java) (revision 18810) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Assemble.java (.../Assemble.java) (revision 18864) @@ -108,7 +108,7 @@ Utils.retryingFindAndClick(By.id("packageType-triggerWrap")); name = Utils.settings.getJSONObject("包装类型").getString("名称1"); - Utils.retryingFindAndClick(By + Utils.retryingFindAndClickBySeleniumAPI(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); isAlertPresent(); @@ -154,7 +154,7 @@ if (element.getText().trim().equals("")) { Utils.retryingFindAndClick(By.id("packageType-triggerWrap")); Utils.doWait(200); - Utils.retryingFindAndClick(By + Utils.retryingFindAndClickBySeleniumAPI(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); } @@ -210,7 +210,7 @@ Utils.retryingFindAndClick(By.id("packageType-triggerWrap")); name = Utils.settings.getJSONObject("包装类型").getString("名称1"); - Utils.retryingFindAndClick(By + Utils.retryingFindAndClickBySeleniumAPI(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); isAlertPresent(); Utils.retryingFindAndClick(By.id("save_print")); @@ -291,7 +291,7 @@ Utils.retryingFindAndClick(By.id("packageType-triggerWrap")); name = Utils.settings.getJSONObject("包装类型").getString("名称1"); - Utils.retryingFindAndClick(By + Utils.retryingFindAndClickBySeleniumAPI(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); isAlertPresent(); @@ -529,7 +529,7 @@ name = Utils.settings.getJSONObject("包装类型") .getString("名称1"); - Utils.retryingFindAndClick(By + Utils.retryingFindAndClickBySeleniumAPI(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); @@ -678,7 +678,7 @@ Utils.retryingFindAndClick(By.id("packageType-triggerWrap")); name = Utils.settings.getJSONObject("包装类型").getString("名称1"); - Utils.retryingFindAndClick(By + Utils.retryingFindAndClickBySeleniumAPI(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); isAlertPresent(); @@ -924,7 +924,7 @@ name = Utils.settings.getJSONObject("包装类型").getString("名称1"); - Utils.retryingFindAndClick(By + Utils.retryingFindAndClickBySeleniumAPI(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); isAlertPresent(); @@ -1063,7 +1063,7 @@ Utils.retryingFindAndClick(By.id("packageType-triggerWrap")); name = Utils.settings.getJSONObject("包装类型").getString("名称1"); - Utils.retryingFindAndClick(By + Utils.retryingFindAndClickBySeleniumAPI(By .xpath("//div/ul/li[contains(text(), '" + name + "')]")); isAlertPresent(); Utils.retryingFindAndClick(By.id("save_print")); Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Apply.java =================================================================== diff -u -r18755 -r18864 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Apply.java (.../Apply.java) (revision 18755) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Apply.java (.../Apply.java) (revision 18864) @@ -217,7 +217,7 @@ } }); - Utils.clickWebElement(yesbutton); + Utils.clickWebElement(false, yesbutton); } else { @@ -487,7 +487,7 @@ } }); - Utils.clickWebElement(yesbutton); + Utils.clickWebElement(false, yesbutton); } else { @@ -765,7 +765,7 @@ } }); - Utils.clickWebElement(yesbutton); + Utils.clickWebElement(false, yesbutton); } Utils.doWait(500); } catch (Exception e) { Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/apply/ApplyTest.java =================================================================== diff -u -r18729 -r18864 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/apply/ApplyTest.java (.../ApplyTest.java) (revision 18729) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/apply/ApplyTest.java (.../ApplyTest.java) (revision 18864) @@ -256,7 +256,7 @@ .xpath("//button[contains(text(), '是')]")); } }); - Utils.clickWebElement(yesbutton); + Utils.clickWebElement(false, yesbutton); } } } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/Utils.java =================================================================== diff -u -r18843 -r18864 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/Utils.java (.../Utils.java) (revision 18843) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/Utils.java (.../Utils.java) (revision 18864) @@ -15,6 +15,7 @@ import net.sf.json.JSONArray; import net.sf.json.JSONObject; +import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.BooleanUtils; import org.apache.log4j.Logger; import org.openqa.selenium.By; @@ -342,12 +343,14 @@ } /** - * 重复查找和click,当出现引用的element过时后,重新查找该element + * 重复查找和执行动作(click或sendKeys等),当出现引用的element过时后,重新查找该element * * @param by + * @param actionType 动作类型 + * @param forceRunSeleniumAPI 是否强制用selniumAPI执行动作 * @return */ - public static WebElement retryingFindAndDoAction(By by, String actionType, + public static WebElement retryingFindAndDoAction(By by,boolean forceRunSeleniumAPI, String actionType, CharSequence... keys) { WebElement element = null; int attempts = 0; @@ -388,7 +391,14 @@ System.out.println("disabled = " + attribute); if (!"true".equalsIgnoreCase(attribute) && element.isEnabled()) { - clickWebElement(element); + + if (forceRunSeleniumAPI){ + element.click(); + } + else{ + clickWebElement(forceRunSeleniumAPI, element); + } + logger.info("点击元素[" + by + "]成功"); } else { logger.info("元素[" + by + "]不是Enable状态,不能点击"); @@ -464,22 +474,32 @@ */ public static WebElement retryingFindAndClick(By by) { - return retryingFindAndDoAction(by, ACTION_CLICK); + return retryingFindAndDoAction(by, false, ACTION_CLICK); } + + /** + * 通过Selenium API进行点击,避免JS点击不成功或者弹出对话框阻塞的问题 + * @param by + * @return + */ + public static WebElement retryingFindAndClickBySeleniumAPI(By by) { + return retryingFindAndDoAction(by, true, ACTION_CLICK); + } + /** * 重复查找和清空内容,当出现引用的element过时后,重新查找该element * * @param by * @return */ public static WebElement retryingFindAndClear(By by) { - return retryingFindAndDoAction(by, ACTION_CLEAR); + return retryingFindAndDoAction(by, false, ACTION_CLEAR); } public static WebElement retryingFindAndSendKeys(By by, java.lang.CharSequence... keys) { - return retryingFindAndDoAction(by, ACTION_SENDKEYS, keys); + return retryingFindAndDoAction(by, false, ACTION_SENDKEYS, keys); } /** @@ -522,7 +542,7 @@ * @return */ public static WebElement retryingFindAndSwitchToFrame(By by) { - return retryingFindAndDoAction(by, ACTION_SWITCH_TO_FRAME); + return retryingFindAndDoAction(by, false, ACTION_SWITCH_TO_FRAME); } /** @@ -593,7 +613,7 @@ try { webElement = tryFind(by); if (isFind(webElement)) { - clickWebElement(webElement); + clickWebElement(false, webElement); } // webElement = findByAwait(by, confirmWaitSetting); } catch (Exception ignored) { @@ -815,7 +835,7 @@ WebElement cell = getFirstCellOfTable(table); if (cell != null) { // cell.click(); - clickWebElement(cell); + clickWebElement(false, cell); } result = true; break; @@ -1249,19 +1269,26 @@ /** * 点击WebElement的通用方法,建议都通过此方法调用,以便统一更换最可靠的方法 * + * @param forceRunSeleniumAPI 是否强制用selenium的API调用,因为JS调用弹出Alert或模态窗口可能导致阻塞 * @param webElement + * */ - public static void clickWebElement(WebElement webElement) { + public static void clickWebElement(boolean forceRunSeleniumAPI, WebElement webElement) { // jsClick(webElement); String tagName = webElement.getTagName(); // span标签:导航菜单 // a标签:很多ExtJS的按钮,例如申请单的终止按钮 // img标签:登录按钮为img标签 + // li标签:桌面的图标按钮 - if ("button".equalsIgnoreCase(tagName) || "a".equalsIgnoreCase(tagName) - || "span".equalsIgnoreCase(tagName) - || "img".equalsIgnoreCase(tagName)) { + // P标签用js无法选中 + // p标签:视图列表中的清洗失败记录的选择 + + String[] tagNamesClickByJS = new String[] {"button" , "a" , "span", "img", "li"}; + + // 如果不强制调用selenium API,并且是需要采用JavaScript点击的标签类型,则用JS进行点击 + if (!forceRunSeleniumAPI && ArrayUtils.contains(tagNamesClickByJS, tagName)) { jsClick(webElement); } else { Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Delivery.java =================================================================== diff -u -r18755 -r18864 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Delivery.java (.../Delivery.java) (revision 18755) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/Delivery.java (.../Delivery.java) (revision 18864) @@ -24,8 +24,11 @@ Utils.retryingFindAndSwitchToFrame(By.id("iframe_invoicePlan")); String name = Utils.settings.getJSONObject("临床科室").getString("名称"); - Utils.retryingFindAndClick(By.xpath("//a[contains(text(), '" + name + + // 视图中的记录,执行selenium的js点击无效,必须调用selenium的API + Utils.retryingFindAndClickBySeleniumAPI(By.xpath("//a[contains(text(), '" + name + "')]")); + Utils.driver.switchTo().defaultContent(); String currentwindowhandle = Utils.driver.getWindowHandle(); Utils.driver.switchTo().window(currentwindowhandle); @@ -478,7 +481,7 @@ if (Utils.isFind(element)) { // 等待仓库加载 Utils.retryingFindAndDoAction( - By.xpath("//input[contains(@value, '测试供应室仓库')]"), + By.xpath("//input[contains(@value, '测试供应室仓库')]"), false, Utils.ACTION_NOP); Utils.retryingFindAndSendKeys(By.id("departBarcode"), Utils.settings.getJSONObject("临床科室").getString("条码") @@ -533,7 +536,7 @@ if (Utils.isFind(element)) { // 等待仓库加载 Utils.retryingFindAndDoAction( - By.xpath("//input[contains(@value, '测试供应室仓库')]"), + By.xpath("//input[contains(@value, '测试供应室仓库')]"), false, Utils.ACTION_NOP); Utils.retryingFindAndSendKeys(By.id("senderBarcode"),