为什么HtmlUnitDriver不执行JavaScript?

前端之家收集整理的这篇文章主要介绍了为什么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()可能更好.由于这些天我不使用它们,我不能确认.如果有人测试他们并更新此答案,这将是巨大的.

猜你在找的HTML相关文章