我有开启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检查内容?