为什么HtmlUnitDriver不执行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.

您可以使用Thread.sleep()方法添加一些延迟.

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()可能更好.由于这些天我不使用它们,我不能确认.如果有人测试他们并更新此答案,这将是巨大的.

相关文章

Mip是什么意思以及作用有哪些
怎么测试Mip页面运行情况
MIP安装的具体步骤有哪些
HTML添加超链接、锚点的方法及作用详解(附视频)
MIP的规则有哪些
Mip轮播图组件中的重要属性讲解