HtmlUnit等待Bootstrap远程模态

时间:2014-06-15 20:00:32

标签: ajax twitter-bootstrap htmlunit

我有开启bootstrap远程模式的代码:

function showModal(url) {
    $('body').append('<div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"></div></div></div>');
    var modal = $('#modal');
    modal.on('hidden.bs.modal', function() {
        $(this).remove();
    });
    modal.modal({
        show: true,
        remote: encodeURI(url)
    });
    return modal;
}

这将正确打开远程模式:

<a id="mdl" onclick="showModal('http://localhost/modal1.php')">Open</a>

modal1.php:

<div>Modal!!!</div>

现在我想在HtmlUnit中测试它。所以我写了

WebClient web = new WebClient();
HtmlPage page = (HtmlPage) mWebClient.getPage("http://localhost/");
page = (HtmlPage)((HtmlAnchore)page.getDocumentElement().querySelector("#mdl")).click();

现在的问题是内容无法访问。

page.getDocumentElement().querySelector(".modal .modal-content"); // Return object
page.getDocumentElement().querySelector(".modal .modal-content div"); // Return null

看起来页面没有从AJAX调用中获取元素。 (在真正的浏览器中它的作品)

我试过了:

web.waitForBackgroundJavaScript(100000);
web.waitForBackgroundJavaScriptStartingBefore(10000)
web.setAjaxController(new AjaxController() {
        @Override
        public boolean processSynchron(HtmlPage page, WebRequest request, boolean async) {
            return true;
        }
});

它还没有用......

就像$.load函数在HtmlUnit中不起作用。

如何使用HtmlUnit检查内容?

0 个答案:

没有答案