我遇到以下问题:
我正在使用带有Browserversion Firefox_3_6的 HtmlUnitDriver的Selenium 2.9运行JUnit testCase.启用 JavaScript现在当它调用并执行以下javaScript函数时,它什么都不做:
我正在使用带有Browserversion Firefox_3_6的 HtmlUnitDriver的Selenium 2.9运行JUnit testCase.启用 JavaScript现在当它调用并执行以下javaScript函数时,它什么都不做:
function openIdsDocument() { var windowBounds = getWindowBounds(); var XMLHTTP = getAjaxRequestObject("XYZ.do?availableWidth="+windowBounds.width+"&availableHeight="+windowBounds.height,"",true); if (XMLHTTP != null) { XMLHTTP.onreadystatechange = function alertAJAXResponse() { if (XMLHTTP.readyState == 4) { window.location.href = getContextPath() + "ABC.do"; } }; XMLHTTP.send("timestamp=" + <%=System.currentTimeMillis()%>); } getLoadingState(); }
我想去ABC.do@H_404_6@
如果我用FirefoxDriver执行测试,它可以工作.@H_404_6@
有没有办法让这个工作与HtmlUnitDriver?
我的测试工作,如果我手动调用driver.get(“http://host/ABC.do”),但不能是正确的方法来做到这一点.@H_404_6@
解决方法
您也可以通过执行JavaScript来启用JavaScript
> new HtmlUnitDriver(true);
> driver.setJavascriptEnabled(true);@H_404_6@
你需要做的就是等到在get(url)之后执行JavaScript.@H_404_6@
您可以使用Thread.sleep()方法添加一些延迟.@H_404_6@
HtmlUnitDriver driver = new HtmlUnitDriver(BrowserVersion.FIREFOX_3_6); driver.setJavascriptEnabled(true); driver.get(url); Thread.sleep(100); runTest();
更新@H_404_6@
正如@Corey在评论中指出的那样,使用Explicit and Implicit Waits而不是Thread.sleep()可能更好.由于这些天我不使用它们,我不能确认.如果有人测试他们并更新此答案,这将是巨大的.@H_404_6@