Index: ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/JSWaiter.java =================================================================== diff -u -r19752 -r19839 --- ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/JSWaiter.java (.../JSWaiter.java) (revision 19752) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/selenium/tools/JSWaiter.java (.../JSWaiter.java) (revision 19839) @@ -16,8 +16,9 @@ * @author : Terry Kwan * @date 创建时间:2017年7月15日 下午11:19:17 * - * 代码来源及使用说明:http://www.swtestacademy.com/selenium-wait-javascript-angular - * -ajax/ + * 代码来源及使用说明: + * http://www.swtestacademy.com/selenium-wait-javascript-angular-ajax/ + * */ public class JSWaiter { @@ -103,14 +104,18 @@ // Get JS is Ready boolean jsReady = false; + // 禁用jQuery的动画效果,一方面可以加快测试的速度,另一方面可以加强测试的稳定性(如果启用了Animation,使用WebDriver驱动浏览器时可能会出现一些无法预料的异常) + String disableJQueryAnimation = "if (typeof jQuery != 'undefined'){ jQuery.fx.off = true }"; + String waitPageReadyJS = disableJQueryAnimation + "return document.readyState"; + // Wait for Javascript to load ExpectedCondition jsLoad = driver -> ((JavascriptExecutor) jsWaitDriver) - .executeScript("return document.readyState").toString() + .executeScript(waitPageReadyJS).toString() .equals("complete"); try { - ((JavascriptExecutor)Utils.driver).executeScript("jQuery.fx.off=true"); + jsReady = (Boolean) jsExec - .executeScript("return document.readyState").toString() + .executeScript(waitPageReadyJS).toString() .equals("complete"); } // 捕获JavascriptException,忽略该异常