Аналогично HTMLUnit не ждет Javascript , но я пытаюсь использовать HTMLUnit 2.36.0 с VueJS для выполнения формы входа.
ОднакоЯ пробовал решения в предыдущем вопросе, но ни один из них не работает, поскольку я могу использовать Vue. Сам код работает в браузере Chrome и Firefox, но не в HtmlUnit. Он никогда не находит форму, вот моя последняя попытка кода.
try (final WebClient webClient = new WebClient()) {
// webClient.setAjaxController(new NicelyResynchronizingAjaxController());
webClient.getOptions().setUseInsecureSSL(true);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setThrowExceptionOnScriptError(true);
webClient.getOptions().setTimeout(0);
webClient.getOptions().setRedirectEnabled(true);
HtmlPage page = webClient.getPage("http://localhost:8081/test.html");
assertNotNull(page);
webClient.waitForBackgroundJavaScript(1000);
while (page.getForms().isEmpty()) {
System.out.println(page.getForms());
synchronized (page) {
page.wait(2000);
}
}
}
test.html https://codepen.io/trajano/pen/mddeXwQ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>Learning Jungle China - Log In</title>
<script src="//cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>
<script type="text/javascript" src="//js.learningjungle.com/signon/lj-signon.umd.min.js"></script>
<link rel="stylesheet" href="//js.learningjungle.com/signon/lj-signon.css" type="text/css" />
</head>
<body>
<div id="lj-signon">
<lj-header></lj-header>
<br />
<br />
<br />
<br />
<lj-login-form action="/Signon.do"></lj-login-form>
</div>
</body>
<script>
new Vue({ el: '#lj-signon' });
</script>
</html>
Я попытался поместить скрипт в body
, а также в onload
. Я также пытался Событие загрузки Javascript, не запускаемое в HtmlUnit
. Я могу убедиться, что сценарии выполняются при добавлении
<script>
document.vue = new Vue({ el: '#lj-signon' });
</script>
с
System.out.println(page.executeJavaScript("document.vue").toString());
не null
. Я также проверил, что скрипты, управляющие DOM, отображаются https://stackoverflow.com/a/58334318/242042
В моем случае визуализированный объект - <!---->
Я также пробовал только с Vue ( без компонентов ) и тоже работает правильно.