我遇到以下问题:
我正在使用带有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
如果我用FirefoxDriver执行测试,它可以工作.
有没有办法让这个工作与HtmlUnitDriver?
我的测试工作,如果我手动调用driver.get(“http://host/ABC.do”),但不能是正确的方法来做到这一点.
解决方法
您也可以通过执行JavaScript来启用JavaScript
> new HtmlUnitDriver(true);
> driver.setJavascriptEnabled(true);
你需要做的就是等到在get(url)之后执行JavaScript.
HtmlUnitDriver driver = new HtmlUnitDriver(BrowserVersion.FIREFOX_3_6); driver.setJavascriptEnabled(true); driver.get(url); Thread.sleep(100); runTest();
更新
正如@Corey在评论中指出的那样,使用Explicit and Implicit Waits而不是Thread.sleep()可能更好.由于这些天我不使用它们,我不能确认.如果有人测试他们并更新此答案,这将是巨大的.